Как переименовать и скопировать файл без переименования исходного файла?

#python #file #directory #copy #shutil

#python #файл #каталог #Копировать #shutil

Вопрос:

Я программирую что-то, что копирует файлы с USB-накопителя в папку назначения, одновременно переименовывая ее. Часть моего кода использует это:

     os.rename(src, srcrename) #renames file in USB drive
    shutil.copy2(srcrename, dstname) #copies file to the destination
 

Проблема в том, что я не хочу, чтобы он переименовывал файлы на USB, как указано выше. Я просто хочу, чтобы он переименовал файлы в месте назначения.

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

1. Почему бы не использовать copy2 и не изменить dstname на пользовательский, как вам нравится. Удалите os.переименуйте и используйте dstNameRename

Ответ №1:

редактировать: не уверен, почему у вас это не сработало, но для копирования с метаданными вместо этого используйте copy2

 import os
from shutil import copy2

if __name__ == "__main__":
    src = "D:\videoplayback (1).mp4"
    dest = "E:\vid.mp4"

copy2(src, dest)
 

Обратите внимание на двойную обратную реакцию при использовании путей Windows

Старый anwser

из shutil импортируйте copyfile copyfile(src, dst)

Если dst не является каталогом, он будет использоваться как новое имя, в противном случае оно будет скопировано внутрь.

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

1. Я не совсем уверен, что вы имеете в виду, но использование copyfile приведет к ошибке. Copyfile также не копирует метаданные, которые я хотел бы.

2. Проверьте, решает ли новый ответ вашу проблему.

3. Это работает! Лично я разрешил функции выбирать путь к папке (для назначения), при этом я смог добавить имя файла в конец пути к папке, чтобы сохранить его в месте назначения с новым именем!

4. Рад, что смог помочь.

5. Похоже, что в отличие от copy и copy2, copyfile в некоторых случаях не имеет определенных разрешений. Вот почему у меня была эта ошибка.