2015-07-21 6 views
-1

Мне нужна помощь. есть папка «C: \ TEMP» в этой папке - отформатированные файлы «IN_ + 7123456789.amr» Необходимо сделать переименование файлов для данного шаблона. "in_ NAME _ ДАТА-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

Другие файлы 't соответствует шаблону re.match и будет проигнорирован.

Смежные вопросы