Чтобы переместить файл в Python, мы можем использовать 2 способа:
- Функция Python os.rename()
- Метод Shutil.move()
Если файл не найден по указанному пути, он вернет ошибку FileError.
Переместите файл с помощью функции os.rename()
Python os.rename() переименовывает файл или каталог src в dist.
Если dst — это файл или каталог (уже присутствующий), то будет возвращен OSError.
Синтаксис
|
1 |
os.rename(src, dst) |
Параметры
- src — это обязательный параметр, и это фактическое имя файла или каталога.
- dst — это обязательный параметр, и это новое имя файла или каталога.
Функция не возвращает никаких значений.
Допустим, у нас есть один файл с именем data.csv, и нам нужно переместить этот файл в другую папку с именем app, которая находится на том же уровне каталога, что и файл data.csv.
См. следующий код, чтобы переместить файл в папку приложения.
|
1 2 3 4 5 |
import os # Move a file by renaming it's path os.rename('data.csv', 'app/data.csv') print('The file is successfully moved to another destination') |
Выход:
|
1 |
The file is successfully moved to another destination |
Из вывода следует, что файл перемещен в новое место назначения, вы можете проверить папку приложения, и файл будет там. Содержимое файла не изменится.
Ошибка перемещения файла: FileNotFoundError
Если вы повторно запустите приведенный выше код, файла не будет, потому что он уже перемещен.
Таким образом, исходный файл не будет перемещаться, и мы получим ошибку FileNotFoundError.
Смотрите вывод.
|
1 2 3 4 |
Traceback(most recent call last): File "app.py", line 4, in <module> os.rename('data.csv', 'app/data.csv') FileNotFoundError: [Errno 2] No such file or directory: 'data.csv' -> 'app/data.csv' |
Вам необходимо правильно настроить Source для правильной работы, а также иметь в виду, что для работы этого примера должен существовать каталог назначения.
Обработка возможных ошибок при перемещении файла в Python
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# importing os module import os # Source file path source = 'data.csv' # destination file path dest = 'app/data.csv' # try renaming the source path # to destination path # using os.rename() method try: os.rename(source, dest) print("File is moved successfully") # If Source is a file # but destination is a directory except IsADirectoryError: print("Source is a file but destination is a directory.") # If source is a directory # but destination is a file except NotADirectoryError: print("Source is a directory but destination is a file.") # For permission related errors except PermissionError: print("Operation not permitted.") # For other errors except OSError as error: print(error) |
Выход:
|
1 2 |
python3 app.py File is moved successfully |
С помощью Shutil.move()
Функция Shutil.move() Python рекурсивно перемещает файл или каталог (источник) в другое место (место назначения) и возвращает место назначения. Если каталог назначения уже существует, то src перемещается внутрь этого каталога.
Синтаксис
|
1 |
shutil.move(src, dest, copy_function=copy2) |
Параметры
- src: строка, представляющая путь к исходному файлу.
- dest: это строка, представляющая путь к целевому каталогу.
- copy_function(optional): это необязательный параметр, значением по умолчанию которого является copy2. Мы можем использовать другие функции копирования, такие как copy, copytree и т. д. для этого параметра.
Пример метода Shutil.move()
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# importing shutil module import shutil # Source file path source = 'data.csv' # destination file path dest = 'app/data.csv' # try to move the source file # to destination path # using shutil.move() method # and return dest file path try: dest = shutil.move(source, dest) print("File is moved successfully to: ", dest) # If Source is a file # but destination is a directory except IsADirectoryError: print("Source is a file but destination is a directory.") # If source is a directory # but destination is a file except NotADirectoryError: print("Source is a directory but destination is a file.") # For permission related errors except PermissionError: print("Operation not permitted.") # For other errors except OSError as error: print(error) |
Выход:
|
1 |
File is moved successfully to: app/data.csv |
Заключение

Python предоставляет два модуля: os и Shutil для выполнения операций с файловой системой. Мы рассмотрели оба модуля и их методы для перемещения файла.
