如何使用python脚本重命名文件夹中包含日期的多个netCDF文件?

如何使用python脚本重命名文件夹中包含日期的多个netCDF文件?,python,datetime,netcdf,weatherdata,Python,Datetime,Netcdf,Weatherdata,我有28个文件,例如:- 文件->day01.nc内部文件:- | lat | lon | date | | --- | --- | -------- | | 7 | 68 | 2021-02-01| | 7 | 69 | 2021-02-01| | lat | lon | date | | --- | --- | -------- | | 7 | 68 | 2021-02-02| | 7 | 69 | 2021-02-02| | lat |

我有28个文件,例如:-

文件->
day01.nc
内部文件:-

| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-01|
| 7   | 69  | 2021-02-01|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-02|
| 7   | 69  | 2021-02-02|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-28|
| 7   | 69  | 2021-02-28|
文件->
day02.nc
内部文件:-

| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-01|
| 7   | 69  | 2021-02-01|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-02|
| 7   | 69  | 2021-02-02|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-28|
| 7   | 69  | 2021-02-28|
文件->
day28.nc
内部文件:-

| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-01|
| 7   | 69  | 2021-02-01|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-02|
| 7   | 69  | 2021-02-02|
| lat | lon | date      |
| --- | --- | --------  |
| 7   | 68  | 2021-02-28|
| 7   | 69  | 2021-02-28|
我想使用python脚本根据日期格式转换它们的名称,例如
temp_ind20210201.nc
temp_ind20210202.nc
,…,
temp_ind20210328.nc

注意:-
day01.nc
中,该文件中的日期格式类似于
2021-02-01
,依此类推。 我试着:-

DATA_DIR = 'data'
today = datetime.datetime.now()
offset_1day = datetime.timedelta(days=1)
re_number = re.compile('day(\d{,2})\.nc')

for fname in glob.glob(DATA_DIR + "/*.nc"):
      number_string = re_number.search(fname)
if not number_string:
      continue
   number_of_days = int(number_string.group(1))
   str_timestamp = (today + (number_of_days - 1) * offset_1day).strftime("%Y%m%d")
   new_fname = f"{DATA_DIR}/temp_ind{_str_timestamp}.nc"
   print(f'{fname} -> {new_fname}')
   os.rename(fname, new_fname)

根据下面的问题和注释,您希望能够提取NetCDF文件中的第一个日期,并使用该日期为该文件生成新的文件名。以下内容应该可以工作,但可能需要调整,具体取决于时间的格式:

import xarray as xr
ds = xr.open_dataset("infile.nc")
"temp_ind" + ds.time[0].values.astype("str")[0:10].replace("-","") + ".nc"

我可能会通过bash中的命令行在循环中执行此操作。我将输出从CDO传输到awk,如果任何文件有多个日期,这将确保文件重命名为文件中的第一个日期

for file in day*.nc ; do 
   mv $file temp_ind`cdo -s showdate $file | awk '{print $1}'`.nc
done 

请注意,CDO输出带有连字符yyyy mm dd的日期,因此,您会得到一个包含连字符的文件名-如果您不喜欢,您可以将带有第二个管道的文件名删除到sed

您如何决定
月份
?实际上,这是当前月份数据,从2021年2月17日开始,到2021年3月18日结束。您还可以编辑您的文件,可以重新打开。不管怎么说,根据您现在的问题,您基本上希望读取nc文件,从“date”中提取第一个条目,关闭文件并根据您提取的内容重命名它?是的,这就是我使用python脚本想要的。我无法从文件中获取日期并将其设置为文件名。请帮忙,你看了吗?这里还有一些关于用Python读取nc文件的问题。对于您的具体情况,如果没有一个.nc文件示例(可能有组,日期可能有不同的格式等),就很难给出一个好的答案。先生,我想要一个自动代码,通过它我可以一次重命名多个文件。请澄清您的问题。你不知道如何编码什么?简单地要求别人帮你解决一个问题是非常违背精神的。事实上,我不知道如何使这件事自动化。所以我需要这方面的帮助。我建议编写一个for循环,一次只处理一个文件。你试过了吗?是的,那样的话,它给了我错误的日期。我希望将写入.nc文件中的日期作为文件名。