2015-07-21 40 views
-1

我需要幫助。 此文件夾中有一個文件夾「C:\ TEMP」是格式化文件「IN_ + 7123456789.amr」 有必要對給定模式的文件進行重命名。 「IN_名_ DATE-CREATE _電話number.amr」 相應地,如果一個文件名爲 「OUT_ + 7123456789.amr」 結果格式 「OUT_ NAME_DATE-CREATE_Phone number.amr」爲給定模式重命名文件

的問題是如何指定os.rename之前的文件名了檢驗,並根據文件名使用的模板

import os 

path = "C:/TEMP" 


for i, filename in enumerate(os.listdir(path)): 
    os.chdir(path) 
    os.rename(filename, 'name'+str(i) +'.txt') 
    i = i+1 
+1

「*如何指定文件名已被檢查*」檢查了什麼?也許如果你展示了一些我可能會理解的代碼? – cdarke

+0

檢查文件名中是否存在單詞,如輸入/輸出單詞/電話 –

+0

Дима,用您在評論中指定的代碼更新問題 – Andersson

回答

0

很抱歉,但沒有你的例子是在你的問題是一致的,我還是不明白你的C:\temp包含的內容。 ..

那麼,假設它看起來像:

>>> os.listdir(path) 
['IN_ + 7123456789.amr', 'OUT_ + 7123456789.amr'] 

的例子:

import datetime 
import re 
import os 

os.chdir(path) 
for filename in os.listdir(path): 
    match = re.match(r'(IN|OUT)_ \+ (\d+).amr', filename) 
    if match: 
     file_date = datetime.datetime.fromtimestamp(os.stat(filename).st_mtime) 
     destination = '%s_%s_%s_Phone number.amr' % (
      match.group(1), # either IN or OUT 
      match.group(2), 
      file_date.strftime('%Y%m%d%H%M%S'), # adjust the format at your convenience 
     ) 

     os.rename(filename, destination) 

會產生:

  • IN_7123456789_20150721094227_Phone number.amr
  • OUT_7123456789_20150721094227_Phone number.amr

其他文件拿下與re.match模式不匹配而被忽略。