2015-07-21 42 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模式不匹配而被忽略。