识别其中包含特定字符的文件,然后重命名该文件

时间:2019-05-08 15:32:52

标签: python python-2.7 python-os

我正在尝试使用以下脚本查找和重命名以下文件

IYBR2C.YGPSWS.SL.1.M.20190503170641.csv to SAK_BB_AL.csv
QWEJ1P.YGPSWS.SL.1.M.20190508122932.csv to SAM_SG_MO.csv
SCPR1C.YGPSWS.SL.1.T.20190503164120.csv to SVM_SG_AL.csv
SMCE2P.SGPAWS.SL.1.T.20190508123138.csv to SDM_SG_MO.csv

这是我尝试使用的单个文件:

但是我的问题是我需要对此重命名有一些条件

ex-:
IYBR2C.YGPSWS.SL.1.M.20190503170641.csv to SAK_BB_AL.csv

对于此示例文件,我需要检查它是否以“ IYBR2C”开头并且如果满足这两个条件,则包含“ M”,然后将其重命名为SAK_BB_AL.csv

for root, dirs, files in os.walk(/tmp):
for dir in dirs:
    if dir.startswith("IYBR2C"):
        org_fp = os.path.join(root, dir)
        new_fp = os.path.join(root, dir[1])
        os.rename(org_fp, new_fp)

我尝试过的操作没有得到预期的结果,找不到文件并重命名了以(“ IYBR2C”)开头的文件,以及如何检查它是否也包含字母(“ M”)。

注意:文件位于我的/ tmp目录中,我不知道其中有多少文件,我提供了一个有关如何为IYBR2C.YGPSWS.SL.1.M.20190503170641.csv实现文件的示例,请提供一般的解决方案:-)

1 个答案:

答案 0 :(得分:0)

这应该可以帮助您。在if语句中,您基本上需要两个条件,即检查第一个单词并在名称中搜索字符。这是一个样机。告诉我是否可以。

filenames=['IYBR2C.YGPSWS.SL.1.M.20190503170641.csv',
'QWEJ1P.YGPSWS.SL.1.M.20190508122932.csv',
'SCPR1C.YGPSWS.SL.1.T.20190503164120.csv',
'SMCE2P.SGPAWS.SL.1.T.20190508123138.csv']
for newname in filenames:
         if(newname.split('.')[0]=='IYBR2C' and "M" in newname):
                print newname,'SAK_BB_AL.csv'

结果:

IYBR2C.YGPSWS.SL.1.M.20190503170641.csv SAK_BB_AL.csv