如何使用最后一个字符串重命名xlsx文件

时间:2019-05-03 13:58:46

标签: python pandas

我有目录,其中有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

3 个答案:

答案 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())