Python:用julian日期重命名文件的嵌套循环

2024-04-26 04:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有约30000每日温度光栅(.asc)从1971年至2070年,需要重新命名。它们目前的名称如下:tasmax_0.asc,tasmax_1.asc,…,tasmax_32767.asc。你知道吗

我需要用朱利安日期和年份(即,tasmax_1_1971.asc,tasmax_2_1971.asc,…,tasmax_365_2070.asc)重命名它们。你知道吗

我知道我需要使用不同计数器的嵌套循环:儒略日计数器(需要在每年年初重置)和年计数器。我很容易与嵌套循环混淆,特别是闰年将有366天而不是365天,我必须每年重置儒略日计数器。你知道吗

我使用的是python2.7

如果你能帮我写这个剧本,我将不胜感激!你知道吗

提前谢谢!你知道吗


Tags: 名称光栅计数器温度重命名重置嵌套循环年份
3条回答

您可以使用Python的^{}模块。你知道吗

import os
import datetime

start_date = datetime.datetime(1971, 1, 1) # January 1, 1971

for fname in os.listdir("date_folder"): # Iterate through filenames
    num_days = fname.split("_")[1] # Check number of days from start
    cur_date = start_date + datetime.timedelta(days=num_days) # Add number of days to start
    os.rename(fname, "tasmax_{0}_{1}".format(cur_date.day, cur_date.year)) # Reformat filename

这假设所有文件都单独位于一个目录中。你知道吗

也许你正在寻找这样的东西:

import os
filex = 0
year = 1971
while filex < 32768:
    if (( year%400 == 0)or (( year%4 == 0 ) and ( year%100 != 0))):
        days = 366
    else:
        days = 365
    current_day = 1
    while current_day <= days:
        os.rename(("tasmax_" + str(filex) + ".asc"),(("tasmax_" + str(current_day) + str(year) + ".asc")))
        current_day = current_day + 1
        filex = filex + 1
    year = year + 1

文件编号、一年中的天数、当前日期和当前年份的计数器。你知道吗

重命名文件im使用

os.rename(oldfilename, newfilename)

但你想用什么就用什么。你知道吗

这个例子只是打印出1_19712_1971,等等

from datetime import date, timedelta

day = date(1971, 1, 1) #1 Jan 1971
step = timedelta(1)    #1 day
curr_year = day.year
count = 1

while day.year <= 2070:
    print("{}_{}".format(count, curr_year))
    day += step
    count += 1
    if day.year != curr_year:
        count = 1
        curr_year = day.year

相关问题 更多 >