Изучаете Python? Вот как скопировать файл
Программирование

Изучаете Python? Вот как скопировать файл

Нужно скопировать файлы в коде Python? Вот как копировать файлы в Python с помощью shutil, os, subprocess и библиотек

Вы хотите улучшить свои навыки работы с Python? Тогда вы можете попробовать выполнять некоторые задачи на своем компьютере с помощью Python. Копирование и вставка файлов из одного каталога в другой с помощью Python – интересный способ сделать это

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

Требования для копирования файлов с помощью Python

Существует множество способов копирования и вставки файлов с помощью Python. Поэтому требования для этого различны и зависят от метода, который вы решите использовать

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

Например, если вы хотите использовать метод os , вам нужно импортировать его в свой код. Однако одним из популярных способов копирования файлов в Python является использование библиотеки shutil

Давайте посмотрим, как мы можем использовать эти различные методы для копирования файлов в Python

Похожие: Как отправлять автоматические сообщения электронной почты в Python

Как копировать файлы с помощью встроенной библиотеки Shutil в Python

Модуль shutil – это встроенная и мощная библиотека Python для быстрого чтения и записи файлов в Python

Для его использования достаточно указать полный путь к исходному и целевому файлам

По сути, shutil принимает такой формат:

shutil.copy( source directory path ,  destination directory path , follow_symlinks=True

Например, приведенный ниже код использует shutil.copy() для копирования файла с именем copy.txt из папки my_folder в другую с именем destination. Затем он переименовывает файл назначения в newFile.txt :

importshutil
sourceFile ='C:/Users/some_directories/my_folder/copy.txt'
destinationFile ='C:/Users/some_directories/destination/newFile.txt'

shutil.copy(sourceFile, destinationFile, follow_symlinks=True

Обратите внимание, что вы можете написать свой код в любом редакторе кода по вашему выбору. Затем вы можете запустить его с помощью командной строки

Однако вы также можете использовать стандартную интегрированную среду разработки Python (IDLE), если вы не знакомы с запуском Python через командную строку

Похожие: Команды командной строки (CMD), которые вы должны знать

Метод shutil.copy не копирует метаданные исходного файла. По сути, ваша машина воспринимает конечный файл как совершенно новый и присваивает ему новые метаданные

Однако, чтобы скопировать метаданные вместе с исходным файлом, используйте метод shutil.copy2 :

importshutil
shutil.copy2(sourceFile, destinationFile, follow_symlinks=True

Приведенный выше метод сохраняет оригинальные метаданные старого файла в файле назначения. Например, файл назначения сохраняет дату создания исходного файла, его размер и другие атрибуты

Аргумент follow_symlinks – это объявление символической ссылки, позволяющее shutil следовать по абсолютному пути. Поэтому его необходимо включить, если исходный и конечный файлы находятся в разных каталогах

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

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

importshutil
shutil.copy2(sourceFile, destinationFile)

В дополнение к использованию методов shutil, описанных выше, вы также можете использовать shutil.copyfile или shutil.copyfileobj

Использование shutil.copyfileobj немного отличается, так как для этого требуется встроенная функция open. Затем вам нужно прочитать и записать двоичный файл, включив аргументы ‘rb’ и ‘wb’

Давайте посмотрим, как работает метод shutil.copyfileobj , используя те же директории, которые мы использовали ранее:

importshutil.

sourceFilePath = open('C:/Users/some_directories/my_folder/copy.txt''rb'
destinationFilePath = open('C:/Users/some_directories/destination/newFile.txt''wb'

shutil.copyfileobj(sourceFilePath, destinationFilePath)

Обратите внимание, что shutil.copyfileobj() не требует аргумента follow_symlinks

Однако shutil.copyfile() работает практически так же, как .copy и .copy2. Они незначительно отличаются только своими внутренними функциями

Чтобы использовать метод shutil.copyfile() :

importshutil
sourceFilePath ='C:/Users/some_directories/my_folder/copy.txt'
destinationFilePath ='C:/Users/some_directories/destination/newFile.txt'

shutil.copyfile(sourceFilePath, destinationFilePath)

Как копировать файлы с помощью модуля os

Модуль os использует два встроенных метода для копирования файлов; методы os.system() и os.popen()

Метод os.system() позволяет имитировать среду командной строки

Однако недостатком методов os является то, что они копируют файлы только в пределах текущего рабочего каталога

Чтобы использовать метод os.system() в Windows:

importos
os.system('copy source.txt destination.txt)

Можно также использовать встроенную команду терминала Windows xcopy :

importos
os.system('xcopy source.txt destination.txt)

Чтобы использовать метод os.system в Linux, замените copy на cp :

importos
os.system('cp source.txt destination.txt)

Как копировать файлы с помощью метода os.popen

Чтобы использовать этот метод, замените os.system() на os.popen()

В Windows используйте:

importos
os.popen('copy source.txt destination.txt)

Как и в случае с os.system() , замените copy на cp , чтобы использовать этот метод в Linux:

importos
os.popen('cp source.txt destination.txt)

Как копировать файлы с помощью модуля subprocess в Python

В дополнение к вышеперечисленным методам, вы также можете использовать библиотеку subprocess() для копирования файлов в Python:

importsubprocessassp
sp.call('copy sourceFile destinationFile', shell=True

Однако в Linux используйте:

importsubprocessassp
sp.call('cp sourceFile destinationFile', shell=True

Библиотека subprocess также использует метод subprocess.check_out(). Он работает так же, как и subprocess.call() :

importsubprocessassp
sp.check_out('copy sourceFile destinationFile', shell=True

В Linux замените copy на cp :

importsubprocessassp
sp.check_out('cp sourceFile destinationFIle', shell=True

Однако, как и методы os, методы subprocess работают только с файлами в текущем рабочем каталоге

Примечание: Вы также можете копировать файлы в папку, если она находится в том же рабочем каталоге, что и исходный файл. Все, что вам нужно сделать, это заменить имя конечного файла именем конечной папки. Однако убедитесь, что папка назначения и исходный файл находятся в текущем рабочем каталоге

Как копировать файлы в Python без использования библиотек

Вы также можете копировать файлы в Python без использования библиотек. Как и в методе shutil, вам понадобятся только полные пути к исходному и целевому каталогам

Вот как этого можно добиться:

sourcePath ='C:/Users/source_directories/my_folder/copy.txt'
destinationPath ='C:/Users/some_directories/destination_directories/newFile.txt'

withopen(sourcePath,'rb'asread:
      withopen(destinationPath,'wb'asmyfile:
       myfile.write(read.read())

Чтобы сделать код многоразовым, его можно модифицировать в функцию:

defcopyFile(source=None, destination=None)
ifnot(sourceanddestination)==None
withopen(source,'rb'asread:
withopen(destination,'wb'asmyfile:
myfile.write(read.read())
else
print('Please enter the source and destination paths'

copyFile(sourcePath, destinationPath)

Вот и все. Вы только что создали многоразовый копировщик файлов с помощью Python без использования какой-либо библиотеки

Продолжайте автоматизировать задачи с помощью Python

Копирование файлов с помощью Python не только помогает вам сосредоточиться на коде при создании проектов, но и позволяет лучше понять управление файлами с помощью Python. Однако, игра с задачами Python – это способ улучшить свои навыки работы с Python, особенно если вы новичок

Например, вы можете изменить дату и время на своем компьютере с помощью модуля os. При желании вы даже можете писать пользовательские команды bash с помощью Python

Теги

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий