我有目录,其中有XLSX文件和Word Doc文件。我只想重命名带有最后一个字符串的XLSX文件,而今天日期(DD/mm(
我的文件路径
DF_25.xlsx
DF_28.xlsx
DF_30.doc
....
我的代码如下:
import os
path = 'H:LearningMohan'
files = os.listdir(path)
for file in files:
os.rename(os.path.join(path, file), os.path.join(path, 'DF_' + file + '.xlsx'))
执行所有重命名后,包括DOC和XLSX文件。如果我重新执行它,请继续附加它,不应在下一个执行中附加
这样:
DF_DF_25.xlsx.xlsx
DF_DF_28.xlsx.xlsx
DF_DF_30.doc.xlsx
我需要输出,例如:
25_DF_3/5.xlsx
28_DF_3/5.xlsx
DF_30.doc
使用 str.endswith
检查文件扩展名并重命名文件。
ex:
import os
path = 'H:LearningMohan'
files = os.listdir(path)
for file in files:
if file.endswith(".xlsx"):
os.rename(os.path.join(path, file), os.path.join(path, 'DF_' + file))
这是我的解决方案。请注意,我将" dd/mm"表达式中的斜线更改为点,因为slash不能在文件名中使用。
import os
#IMPORT RE MODULE TO REMOVE ALL NON-NUMERIC SYMBOLS FROM FILE NAME
import re
from datetime import datetime
#DEFINE D/M TO ADD TO NAME
now = datetime.now().strftime('%d.%m').replace('0','')
path = 'H:LearningMohan'
files = os.listdir(path)
for file in files:
#CHOOSE ONLY .XLSX FILE
if file.endswith(".xlsx"):
os.rename(os.path.join(path, file)
, os.path.join(path, re.sub("[^0-9]", "",file) +'_DF_' + now + '.xlsx'))
来自
DF_25.xlsx
DF_28.xlsx
DF_30.doc
to
25_DF_03_May.xlsx
28_DF_03_May.xlsx
DF_30.doc
使用dd_mmm格式
_df用于检查以查找文件已重命名
import os
from datetime import *
dt=(datetime.today().strftime('%d_%b'))
path = 'H:LearningMohan'
files = os.listdir(path)
for file in files:
filename,ext=os.path.splitext(file)
if ext==".xlsx" and "_DF" not in filename:
os.rename(os.path.join(path, file), os.path.join(path, filename.split('_')[-1].strip('.xlsx')+'_DF_'+dt+ext))
print(os.listdir())