2016-06-14 77 views
0

我在考慮此代碼應該將文件夾中的所有文件都重新命名爲.pdf_(日期)爲.pdf。但事實並非如此。如何通過刪除存檔日期來重命名文件擴展名

import os,sys 
folder = 'C:\/MattCole\/test' 
for filename in os.listdir(folder): 
     infilename = os.path.join(folder,filename) 
     if not os.path.isfile(infilename): continue 
     oldbase = os.path.splitext(filename) 
     newname = infilename.replace('.pdf*', '.pdf') 
     output = os.rename(infilename, newname) 

例子:file1.pdf_20160614-050421更名爲file.pdf目錄

會有多個文件。有人能告訴我我做錯了什麼嗎?我也曾嘗試計數的推廣和使用'.pdf????????????', '.pdf'

+2

你不能在python的'str.replace'函數中使用像'*'這樣的通配符。 – timakro

+0

嘗試're.sub',而不是,你可以定義一個正則表達式來替換。 – jonrsharpe

+0

以前從未使用過re.sub。看起來我也需要確定模式。 –

回答

0

要在拆分舊文件名_,然後在第一個部分爲新的名字:

>>> old_name = 'file1.pdf_20160614-050421' 
>>> new_name = old_name.split('_')[0] 
>>> new_name 
'file1.pdf' 
+0

我也在想。分割擴展名,然後保持第一個索引。我能夠重新命名單個文件,但無法執行多個文件。謝謝回覆。 –

2

這是一個有點傻,你在這裏得到了一些非常好的代碼,你沒有使用。你應該使用它。

import os,sys 
folder = 'C:\/MattCole\/test' 
for filename in os.listdir(folder): 
     infilename = os.path.join(folder,filename) 
     if os.path.isfile(infilename): 
      oldbase, oldext = os.path.splitext(infilename) 
      if oldext.startswith('.pdf'):   
       output = os.rename(infilename, oldbase+'.pdf') 
+0

完美。我知道我必須接近。謝謝韋恩。 –

相關問題