2016-07-26 197 views
1

假設我有一個文件夾,其中包含我想要重命名的n csv文件。新的文件名會是像ABxxxx,與xxxx是從1累進數量爲1000Python:如何在使用os重命名文件時保留文件擴展名?

,而這樣做,我怎麼能保留原來的文件擴展名,這是csv

我迄今所做的改變了文件名,但已經刪掉了擴展:

directory=r'C:\Me\MyDir' 
subdir=[x[0] for x in os.walk(directory)] 
subdir.pop(0) 

for i in subdir: 
    temp_dir=r''+i 
    os.chdir(temp_dir) 
    a='A' 
    b='B' 
    for file in glob.glob("*.csv"): 
     for i in range(1,1001): 
      newname=a+b+i 
     os.rename(file,newname) 
+3

將'.csv'添加到'newname'? – Suever

+0

像'newname +'。csv「'? – FaCoffee

+0

得到文件名的最後四個字符 - '''ext = filename [-4:]'',將它賦值給一個變量,使用該變量構造一個新的文件名。 – wwii

回答

5

你可以簡單地添加'.csv'到新的文件名:

os.rename(file, newname + '.csv') 

在一般問題(任何文件類型),更好的方法是使用os.path.splitext先獲得現有的擴展名,然後將其附加到新的文件名。

oldext = os.path.splitext(file)[1] 
os.rename(file, newname + oldext) 
1

使用os.path.splitext打造(basepath, extension)enumerate元組來生成你的「唯一標誌」。現在你可以使用香草串格式化將它粘合在一起

for i in subdir: 
    temp_dir=r''+i 
    os.chdir(temp_dir) 
    a='A' 
    b='B' 
    for idx, file in enumerate(glob.glob("*.csv")): 
     os.rename(file,'{0}{2}{1}'.format(*(os.path.splitext(file) + (idx,)))) 
相關問題