重命名带有日期的多个文件名

时间:2019-03-18 15:30:44

标签: python

我想寻求您的帮助,以日期重命名多个文件。我有netcdf文件“ wrfoutput_d01_2016-08-01_00:00:00”,直到“ wrfoutput_d01_2016-08-31_00:00:00”为止,由于输出来自Linux,Windows无法读取该文件。我想将文件名更改为“ wrfoutput_d01_2016-08-01_00”,直到“ wrfoutput_d01_2016-08-31_00”。如何使用python做到这一点?

编辑:

包含文件夹有两组文件。域1的一个表示为d01,wrfoutput_ d01 _2016-08-31_00:00:00,另一组表示为d02,wrfoutput_ d02 _2016-08- 31_00:00:00。 d01的文件总数为744,因为时间步输出与d02每小时相同。

我想每天重命名一次。说,wrfoutput_d01_2016-08-01_00:00:00,wrfoutput_d01_2016-08-01_01:00:00,...到wrfoutput_d01_2016-08-01_00,wrfoutput_d01_2016-08-01_01,...

我看到了一个允许访问特定文件的代码,例如d01或d02。

import os
from netCDF4 import Dataset
from wrf import getvar

filedir = "/home/gil/WRF/Output/August/"
wrfin = [Dataset(f) for f in os.listdir(filedir)
        if f.startswith("wrfout_d02_")]

在此代码之后,我被卡住了。

3 个答案:

答案 0 :(得分:1)

首先获取文件名,提供文件夹路径('/home/user/myfolder...'),然后重命名。

import os
import re
filenames = os.listdir(folder_path)

for fn in filenames:
    os.rename(fn, re.sub(':','-',fn))

答案 1 :(得分:0)

另一个答案将冒号转换为连字符。如果您希望从文件名中截断时间,则可以使用它。

这假定文件与python脚本位于同一目录中。如果不是,请更改“。”到“ path / to / dir /”。重命名文件时,它还会仅查看名称格式为“ wrfoutput ...”的文件。

from os import listdir, rename
from os.path import isfile, join

only_files = [f for f in listdir('.') if isfile(join('.', f))]

for f in only_files:
    # Get the relevant files
    if 'wrfoutput' in f:
        # Remove _HH:MM:SS from end of file name
        rename(f, f[:-9])

答案 2 :(得分:0)

打开终端

cd进入目录(theta

启动python(cd /home/myfolder

现在,一个简单的重命名。

python