Замена имен файлов в python новыми именами файлов [дубликаты]

1

Возможный дубликат:
Переименовать файлы на Python

Привет всем, я создаю script в Python, чтобы обернуть несколько OS-команд, связанных с редактированием объемного изображения, и большая часть задач завершена, однако я поставлен в тупик по одной задаче (казалось бы, простой в этом).

Когда я сканирую изображения на своем сканере, я получаю имя файла, похожее на это:

201105151110_0001A.jpg

где первая часть - это некоторая временная метка (которую я хочу заменить), однако я хотел сделать эту переменную ввода (где я или другие пользователи могли просто вставить это в командную строку, если я используя другой сканер, где структура имени файла может отличаться. 0001A означает переднюю часть первой фотографии/документа, и я хотел бы сохранить эту часть имени файла.

У меня есть три переменные:

    old_prefix = input(bcolors.PROMPT + "Enter the prefix to replace: " + bcolors.ENDC)
    new_prefix = input(bcolors.PROMPT + "Enter the new prefix: " + bcolors.ENDC)
    working_directory

work_directory - это переменная из другой части кода, в которой будут расположены изображения. Цветовая часть только для того, чтобы я мог раскрасить результат и упростить его чтение. Когда я буду работать над ним, в каталоге будет от 1 до 1000 файлов.

Этот script будет запущен в Linux.

Спасибо!

--- EDIT ---

Извините за то, что потерял время, ребята, кажется, я упустил некоторую информацию в вопросе, связанном здесь Кириллом Кировым, кодом, который я придумал, который работает:

elif retouch_option == "06":
    print(" ")
    old_prefix = input(bcolors.PROMPT + "Enter the prefix to replace: " + bcolors.ENDC)
    new_prefix = input(bcolors.PROMPT + "Enter the new prefix.......: " + bcolors.ENDC)
    print(bcolors.OUTPUT + " ")
    for fname in glob(working_directory + "*.jpg"):
        keeper = fname[-9:]
        print("Renaming image", keeper)
        os.rename(fname, fname.replace(old_prefix, new_prefix)) 

Я думаю, что это должно быть безопасно, поскольку оно просто заменяет переменную old_prefix переменной new_prefix. Это правда? Если бы не я, я определенно оценил бы обратную связь, хотя пока это работает нормально.

  • 0
    так что вы хотите разделить его на $ 1_ $ 2.jpg и хотите оставить $ 2 и заменить $ 1? что вы застряли при чтении ввода или обработки следующего шага?
  • 0
    for fn in *.jpg ; do mv -n $fn $(echo $fn | sed 's/.*_//') ; done
Показать ещё 3 комментария
Теги:
rename

1 ответ

2

что-то вроде:

sep = '_'
try:
    prefix,keeper = filename.split(sep)
except: # filename does not match desired structure
    print "not processed: no '" + sep + "' in '"+ filename + "'"
else:   # split succeeded: 
    if prefix == old_prefix:
        filename = new_prefix + sep + keeper
        # more processing...
    else:
        print "prefix doesn't match in '" + filename + "'"
  • 1
    Если вы используете prefix, sep, rest = filename.partition('_') тогда, if prefix == old_prefix: filename = new_prefix + sep + rest будет работать, даже если filename не содержит '_' .
  • 0
    «раздел» - это только Python 2.5 и более поздние версии. В вопросе не указана версия Python, поэтому я остановился на чем-то простом. Кроме того, вы, вероятно, не хотите, чтобы это работало, если имя файла, например, «..»

Ещё вопросы

Сообщество Overcoder
Наверх
Меню