Такое переименование довольно просто, например с модулями os и glob :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Затем вы можете использовать его в своем примере следующим образом:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
Приведенный выше пример будет преобразовывать все *.doc
файлы в c:\temp\xx
директории с new(%s).doc
, где %s
находится предыдущее базовое имя файла (без расширения).
%
символ используется в командеos.path.join(dir, titlePattern % title + ext)
? Я знаю, что%
это для операции по модулю, а также используется в качестве оператора форматирования. Но обычно за ним следуетs
или,f
чтобы указать формат. Почему%
в указанной команде сразу после ничего (пробела) нет ?Я предпочитаю писать небольшие вкладыши для каждой замены, которую мне нужно сделать, вместо того, чтобы создавать более общий и сложный код. Например:
Это заменяет все подчеркивания дефисами в любом нескрытом файле в текущем каталоге.
источник
rename
:(no such file error
просто помните, чтоos.rename
нужен полный путьЕсли вы не против использования регулярных выражений, эта функция даст вам много возможностей при переименовании файлов:
Итак, в вашем примере вы можете сделать (при условии, что это текущий каталог, в котором находятся файлы):
но вы также можете вернуться к исходным именам файлов:
и больше.
источник
У меня это просто переименовать все файлы в подпапках папки
Я заменяю все вхождения old_str любым случаем на new_str.
источник
Попробуйте: http://www.mattweber.org/2007/03/04/python-script-renamepy/
Также доступен исходный код программы.
источник
Я сам написал скрипт на Python. В качестве аргументов он принимает путь к каталогу, в котором находятся файлы, и шаблон именования, который вы хотите использовать. Однако он переименовывает, добавляя инкрементный номер (1, 2, 3 и так далее) к заданному вами шаблону именования.
Надеюсь, что это работает для вас.
источник
источник
os.chdir(path_of_directory)
источник
У меня была аналогичная проблема, но я хотел добавить текст в начало имени файла всех файлов в каталоге и использовал аналогичный метод. См. Пример ниже:
источник
что касается меня в моем каталоге, у меня есть несколько подкаталогов, в каждом подкаталоге много изображений, я хочу изменить все изображения подкаталога на 1.jpg ~ n.jpg
(мой собственный ответ) https://stackoverflow.com/a/45734381/6329006
источник
источник
Если вы хотите изменить имена файлов в редакторе (например, vim), библиотека кликов поставляется с командой
click.edit()
, которую можно использовать для получения пользовательского ввода от редактора. Вот пример того, как его можно использовать для рефакторинга файлов в каталоге.Я написал приложение командной строки, в котором используется тот же метод, но это снижает нестабильность этого сценария и содержит больше возможностей, например рекурсивный рефакторинг. Вот ссылка на страницу github . Это полезно, если вам нравятся приложения командной строки и вы хотите быстро отредактировать имена файлов. (Мое приложение похоже на команду "bulkrename" в ranger ).
источник
Этот код будет работать
Функция точно принимает два аргумента f_patth как ваш путь для переименования файла и new_name как ваше новое имя файла.
источник