Kaelel Bilang
Kaelel Bilang

Reputation: 13

Renaming multiple file names with date

I would like to ask for your help on renaming multiple files with date. I have netcdf files "wrfoutput_d01_2016-08-01_00:00:00" until "wrfoutput_d01_2016-08-31_00:00:00" which windows do not read since output is from Linux. I wanted to change the file name to "wrfoutput_d01_2016-08-01_00" until "wrfoutput_d01_2016-08-31_00". How do I do that using python?

Edit:

The containing folder has two set of files. One for domain 1 as denoted by d01, wrfoutput_d01_2016-08-31_00:00:00, and the other set is denoted by d02, wrfoutput_d02_2016-08-31_00:00:00. Total files for d01 is 744 since time step output is hourly same as with d02.

I wanted to rename for each day on an hourly basis. Say, wrfoutput_d01_2016-08-01_00:00:00, wrfoutput_d01_2016-08-01_01:00:00,... to wrfoutput_d01_2016-08-01_00, wrfoutput_d01_2016-08-01_01,...

I saw a code which allows me to access the specific file, e.g. d01 or 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_")]

After this code I get stuck.

Upvotes: 0

Views: 269

Answers (3)

Raj006
Raj006

Reputation: 562

Open the Terminal

cd into your directory (cd /home/myfolder)

Start python (python)

Now, a simple rename.

import os
AllFiles=os.listdir('.')
for eachfile in AllFiles:
    os.rename(eachfile,eachfile.replace(':','_'))

Upvotes: 0

Joe D
Joe D

Reputation: 79

The other answer converts the colons to hyphens. If you wish to truncate the time from the file name, you can use this.

This assumes the files are in the same directory as the python script. If not, change '.' to 'path/to/dir/'. It also only looks at files that have the name format 'wrfoutput...' when it renames them.

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])

Upvotes: 0

dzang
dzang

Reputation: 2260

First get the filenames, giving the folder path ('/home/user/myfolder...'), then rename them.

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

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

Upvotes: 1

Related Questions