2016-02-03 114 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