如何解决如何使用python脚本重命名文件夹中包含日期的多个netCDF文件?
| 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|
我想根据日期格式转换他们的名字,比如 temp_ind20210201.nc
,temp_ind20210202.nc
,...,temp_ind20210328.nc
使用 python 脚本。
注意:-在 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 .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。