самый простой способ переименовать несколько файлов в папке?

#python

#python

Вопрос:

У меня есть файлы с именами, подобными приведенным ниже, и мне нужно изменить их на формат правой стороны.

 CK-123443-1.dft  - CK-123443.dft
CK-123344-A.dft  - CK-123344.dft
123322-B.dft     - 123322.dft
  

Я пытался использовать split(‘-‘), но это работает не для всех файлов, потому что некоторые файлы имеют два hipen, а некоторые — один. могу ли я получить какое-либо другое решение этой проблемы?

Мой код с re: я не уверен в повторном выражении

 import re
new = re.sub('-', '.', old)
  

Комментарии:

1. опубликуйте код, который вы пробовали

2. почему бы вам не попробовать команду mv вместе с шаблоном *.dft?

Ответ №1:

Если вы уверены, что каждое имя файла в каталоге имеет дефис, который необходимо удалить, вы можете разделить на дефисы и исключить только последнюю разделяемую часть.

Итак, что-то вроде этого:

 name, ext = file_name.split('.')  # Get the 'dft' part aside

new_name = ''.join(name.split('-')[:-1])   f'.{ext}'
  

Комментарии:

1. вы можете использовать rsplit()

Ответ №2:

РЕШЕНИЕ:

 import re
#assuming that your file is called file_name
new_name = re.sub('-[A-Za-z0-9].', '.', file_name)
#this replaces the characters after the last hyphen and before the extension.
  

Я думаю, вы можете легко сделать это с помощью регулярных выражений — прежде чем я скажу вам, какой шаблон следует использовать, мне нужно больше ясности в том, как вы хотите изменить имя — вы хотите сохранить все начальные символы алфавита и удалить все конечные символы после дефиса и перед расширением?

Комментарии:

1. Мне ничего не нужно после последнего hipen, и мне нужно сохранить то же расширение файла

2. Мне нужны все ведущие символы до последнего hipen и расширение файла