Python - 根据子文件夹和文件名重命名子文件夹中的文件

时间:2015-07-15 16:27:27

标签: python os.path

我有一个文件夹,C:\ temp,子文件夹和文件如下:

\11182014\

VA1122F.A14  
VA9999N.A14  
CT3452F.B13  
CT1467A.B14

\12012014\

MT4312F.B14  
MT4111N.B14  
CT4111F.A12

文件扩展名始终为“.A”或“.B”,后跟2位数字。 文件名始终以“F”,“A”或“N”结尾。

我想遍历C:\ temp和:

中的所有子文件夹
  • 为每个文件添加“My_X_”前缀,其中X是F,N或A(即文件名中的最后一个字母)

  • 使用“_”后缀每个文件+子文件夹的名称

结果将是:

\11182014\

My_F_VA41245F_1182014.A14  
My_N_VA43599N_1182014.A14  
My_F_CT41111F_1182014.B13  
My_A_CT41112A_1182014.B14  

\12012014\

My_F_MT4312F_12012014.B14  
My_N_MT4111N_12012014.B14  
My_F_CT4111F_12012014.A12 

有什么建议吗?

2 个答案:

答案 0 :(得分:0)


    #!/usr/bin/env python
# ---*--- coding:utf-8 ---*---

import os

path = "/home/username/test"

for root,dirname,filename in os.walk(path):
    for i in filename:
        i = i.split(".")
        first = i[1][0]
        last = i[0][-1]
        print "My_"+last+i[0]+root+"."+i[1]

答案 1 :(得分:0)

这样做

fld = '/Your/path/to/main/folder/'

for root, subdirs, files in os.walk(fld):
    for name in files:
        curr_fld = os.path.basename(root)
        oldname = os.path.join(fld, curr_fld, name)
        splt_name =  name.split('.')
        myname = '_'.join(['My', splt_name[0][-1], splt_name[0], curr_fld + '.' + splt_name[1]])
        newname = os.path.join(fld, curr_fld, myname)
        os.rename(oldname, newname)