Если в имени файла присутствует «Part [Digits] .rar» - PullRequest
0 голосов
/ 22 марта 2012

Итак, я хочу разработать сценарий, который будет возвращать дубликаты с именами файлов и расширениями, чтобы я мог изменять имена файлов (использовать заглавные буквы, удалять точки, тире и т. Д.) В имени, а затем просто добавлять расширение и идти (в какой-то момент я надеюсь бросить это во что-то с графическим интерфейсом).

Я не уверен, что лучший способ сделать это, но я бы хотел, чтобы он имел расширение (последний .ext), если имя файла не заканчивается на "part [любое количество цифр, любое число нулей от 1-любое число] .rar ", тогда он принимает последние две части как" расширение ".

Я не настроен на эту конкретную методологию. Тем не менее, мне нужно интегрировать его в текущий скрипт (интегрировать в тот же скрипт, который я буду использовать для всего остального), и я знаю, что это должно закончиться тем, что у меня будет двойное имя, ext пары.

Мой текущий код:

import os, shutil, re
def rename_file (original_filename):
    name, extension = os.path.splitext(original_filename)    
    name = re.sub(r"\'", r"", name) # etc...more of these...
    new_filename = name + extension
    try:
        # moves files or directories (recursively)
        shutil.move(original_filename, new_filename)
    except shutil.Error:
        print ("Couldn't rename file %(original_filename)s!" % locals())
[rename_file(f) for f in os.listdir('.') if not f.startswith('.')]

Как мне сделать так, чтобы "part [digits]" ставилось так .rar как часть "ext" вместо части имени?

1 Ответ

1 голос
/ 22 марта 2012

Вы можете сделать это в регулярном выражении вместо использования splitext:

m = re.search(r'(.*?)((part\[\d+\])?\.rar)', original_filename)
name, ext = m.groups()[:2]

Так, например:

>>> m = re.search(r'(.*?)((part\[\d+\])?\.rar)', 'name_part[23].rar')
>>> m.groups()[:2]
('name_', 'part[23].rar')

Или

>>> m = re.search(r'(.*?)((part\[\d+\])?\.rar)', 'name_no_parts.rar')
>>> m.groups()[:2]
('name_no_parts', '.rar')

Это предполагает, что расширение на самом деле .rar.Легко настроить регулярное выражение, если это не так.

...