2016-02-03 60 views
0

一个字符串,这是是我的文件的毗连在python

2015125_0r89_PEO.txt 
2015125_0r89_PED.txt 
2015125_0r89_PEN.txt 

2015126_0r89_PEO.txt 
2015126_0r89_PED.txt 
2015126_0r89_PEN.txt 

2015127_0r89_PEO.txt 
2015127_0r89_PED.txt 
2015127_0r89_PEN.txt 

,我想改成这样:

US.CAR.PEO.D.2015.125.txt 
US.CAR.PED.D.2015.125.txt 
US.CAR.PEN.D.2015.125.txt 

US.CAR.PEO.D.2015.126.txt 
US.CAR.PED.D.2015.126.txt 
US.CAR.PEN.D.2015.126.txt 

US.CAR.PEO.D.2015.127.txt 
US.CAR.PED.D.2015.127.txt 
US.CAR.PEN.D.2015.127.txt 

这是到目前为止我的代码,

import os 

paths = (os.path.join(root, filename) 
     for root, _, filenames in os.walk('C:\\data\\MAX\\') #location files 
     for filename in filenames) 

for path in paths: 
    a = path.split("_") 
    b = a[2].split(".") 
    c = "US.CAR."+ b[0] + ".D." + a[0] 
    print c 

时我运行脚本它没有发生任何错误,但不改变文件的名称.txt这是它是什么应该这样做

任何帮助吗?

+0

到remane你必须使用一个文件'os.rename' – Copperfield

+0

'US.CAR.PEO.DC:\ DATA \ MAX \ 2015125 US.CAR.PED.DC:\ DATA \ MAX \ 2015125 美国。 CAR.PEN.DC:\ data \ MAX \ 2015125 US.CAR.PEO.DC:\ data \ MAX \ 2015126 US.CAR.PED.DC:\ data \ MAX \ 2015126 US.CAR.PEN。 DC:\ data \ MAX \ 2015126 US.CAR.PEO.D.2015.C:\ data \ MAX \ 2015127 US.CAR.PED.D.2015.C:\ data \ MAX \ 2015127 US。 CAR.PEN.D.2015.C:\ data \ MAX \ 2015127' – Armando

+0

@Copperfield是这样的吗?对于路径路径: a = path.split(“_”) b = a [2] .split(“。”) c =“US.CAR。”+ b [0] +“.D。 “ + a [0] os.rename(path,c)' – Armando

回答

0

您通过首先获取路径然后操作它会得到不好的结果,在这种情况下,最好先获取文件的名称,对其进行更改,然后更改文件本身的名称像这样

for root,_,filenames in os.walk('C:\\data\\MAX\\'): 
    for name in filenames: 
     print "original:", name 
     a = name.split("_") 
     b = a[2].split(".") 
     new = "US.CAR.{}.D.{}.{}".format(b[0],a[0],b[1]) #don't forget the file extention 
     print "new",new 
     os.rename(os.path.join(root,name), os.path.join(root,new)) 

字符串连接是比较低效的,最好的办法是使用字符串formating