Переименование нескольких файлов в каталоге с использованием Python




directory rename (4)

Вы должны сначала сделать этот путь текущим рабочим каталогом. достаточно просто. Остальная часть кода не имеет ошибок.

чтобы сделать его текущим рабочим каталогом:

os.chdir(path)

Я пытаюсь переименовать несколько файлов в каталоге с помощью этого сценария Python:

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)
i = 1

for file in files:
    os.rename(file, str(i)+'.jpg')
    i = i+1

Когда я запускаю этот скрипт, я получаю следующую ошибку:

Traceback (most recent call last):
  File "rename.py", line 7, in <module>
    os.rename(file, str(i)+'.jpg')
OSError: [Errno 2] No such file or directory

Почему это? Как я могу решить эту проблему?

Благодарю.


Вы не даете весь путь при переименовании, сделайте это так:

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)


for index, file in enumerate(files):
    os.rename(os.path.join(path, file), os.path.join(path, ''.join(str(index), '.jpg')))

Редактировать : Благодаря tavo, первое решение будет перемещать файл в текущий каталог, исправили это.


Согласно комментарию @ daniel, os.listdir () возвращает только имена файлов, а не полный путь к файлу. Используйте os.path.join (путь, файл), чтобы получить полный путь и переименовать его.

import os
path = 'C:\\Users\\Admin\\Desktop\\Jayesh'
files = os.listdir(path)
for file in files:
   os.rename(os.path.join(path, file), os.path.join(path, 'xyz_' + file + '.csv'))

Я работал над быстрым и гибким сценарием, чтобы позаботиться об отображении различий, запросе подтверждений и переименовании. Если вам нужно рабочее решение, вы можете скопировать этот скрипт и поместить его в папку, в которую вы хотите переименовать файлы. https://gist.github.com/aljgom/81e8e4ca9584b481523271b8725448b8

Он переименовывает файлы в текущем каталоге, передавая «функции переименования», каждая функция может позаботиться об изменении. Затем определяет изменения, которые внесет каждая функция, и отображает различия, используя цвета, и запрашивает подтверждение для внесения изменений. Работает на pycharm, не тестировал его на разных консолях





rename