Ninjasoup
Ninjasoup

Reputation: 173

adding creation time to a files filename

So far I have the following:

source_folder = 'file_location'
for file in os.listdir(source_folder):
    if file.startswith('stnet_'):
        os.rename(file, file.replace('stnet_a_b', '%s_' % time.ctime(os.path.getctime(file)) + 'stnet_a_b'))

The issue with is is I keep getting FileNotFoundError: [WinError 2] The system cannot find the file specified 'stnet_a_b.raw'

Can someone point out what I'm doing wrong?

Thanks.

Upvotes: 0

Views: 40

Answers (1)

Lei Yang
Lei Yang

Reputation: 4325

os.listdir can only get the filenames without directory, while os.rename, os.path.getctime needs full name with directory(if your current directory is not conincidently file_location then the file will not be found). You can use os.path.join to get the full name. And if you are on Windows you must make sure filename doesn't contain special characters which your code contains.

dir = r'file_location'
# os.chdir(dir) # in case you don't want to use os.path.join
for filename in os.listdir(dir):
print(filename)
if filename.startswith('stnet_'):
    src = os.path.join(dir, filename)
    ctime_str = str(time.ctime(os.path.getctime(src)))
    ctime_str = ctime_str.replace(':', '').replace(' ', '')  # remove special characters
    fn_new = filename.replace('stnet_a_b',
                              '{}_'.format(ctime_str + 'stnet_a_b'))
    des = os.path.join(dir, fn_new)
    print('src={}, des={}'.format(src, des))
    os.rename(src, des)

please try above code.

Upvotes: 1

Related Questions