我正在尝试找到一种使用python自动重命名文件的方法。
因此,文本文件每天都需要重命名,以包含昨天的日期(T-1)。
例如:FileName_20200121.txt需要重命名为FileName_20200120.txt。
我该怎么做呢?
提前感谢您的帮助。
发布于 2020-02-14 22:40:56
此脚本将在文件名中搜索"%Y%m%d"格式的日期(例如,"FileName_20200121_foobar.txt"将起作用),并用date - 1day替换在文件中找到的日期
import os
from datetime import datetime, timedelta
old_filename = "FileName_20200121.txt"
strTime = datetime.now().strftime("%Y%m%d")
split_str = old_filename.split(".")[0].split("_")
format_str = "%Y%m%d"
for s in split_str:
try:
old_date_str = s # 20200121
old_date = datetime.strptime(s, format_str).date() # 2020-01-21
new_date = old_date - timedelta(days=1) # 2020-01-20
new_date_str = new_date.strftime(format_str) # 20200120
except:
pass
new_filename = old_filename.replace(old_date_str, new_date_str)
print("new_filename", new_filename)
# FileName_20200120.txt
os.rename(old_filename, new_filename)发布于 2020-02-14 22:52:10
您可以使用os.rename(src, dst)
将文件或目录
src重命名为dst。如果存在dst,则操作将失败,并显示OSError
假设您的所有文件都以.txt结尾,下面的代码应该可以解决这个问题
import os
from datetime import datetime, timedelta
directory = '/path/to/files'
filenames = [f for f in os.listdir(directory) if f.endswith('.txt')]
yesterday = datetime.strftime(datetime.now() - timedelta(1), '%Y%m%d')
for file_name in filenames:
new_file_name = file_name[:-12] + yesterday + file_name[-4:]
os.rename(os.path.join(directory, file_name), os.path.join(directory, new_file_name))https://stackoverflow.com/questions/60228417
复制相似问题