我有目录,其中有xlsx文件和word doc文件。我只想重命名具有最后一个字符串和今天日期(dd / mm)的xlsx文件
我的文件路径
DF_25.xlsx
DF_28.xlsx
DF_30.doc
....
我的代码如下:
import os
path = 'H:\Learning\Mohan'
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
答案 0 :(得分:1)
使用str.endswith
检查文件扩展名并重命名文件。
例如:
import os
path = 'H:\Learning\Mohan'
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))
答案 1 :(得分:1)
这是我的解决方案。请注意,我将'DD / MM'表达式中的斜杠更改为点,因为在文件名中不能使用斜杠。
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:\Learning\Mohan'
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'))
答案 2 :(得分:0)
来自
DF_25.xlsx
DF_28.xlsx
DF_30.doc
收件人
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:\Learning\Mohan'
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())