Копирование файла в Python: метод Shutil.copy(), Shutil.copystat()

Методы копирования файлов Python

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

Фоллоwing команда используется для копирования файла

shutil.copy(src,dst)

Фоллоwing команда используется для копирования файла с информацией метаданных

shutil.copystat(src,dst)

Как скопировать файл в Python

Вот шаги для копирования файла в Python с использованием метода Shutil copy():

Шаг 1) Захватить исходный путь в текущем каталоге
Прежде чем копировать файл, нам нужно получить путь к исходному файлу в текущем каталоге. В коде –

  1. Объявление переменной
  2. Применение функции разделения к переменной

Скопируйте файл в Python

Код Пояснение

  • Сначала мы проверим, существует ли наш файл «guru99.txt». Поскольку ранее мы создали файл guru99.txt, мы знаем, что он существует, и продолжим работу с кодом.
  • Мы сохраняем путь к файлу в переменной «SRC», если ваш файл существует
  • Как только мы получим путь, мы разделим путь и имя файла.
  • Для этого мы воспользуемся разделением path.split функция для исходной переменной
  • Код при выполнении выводит «имя файла(Основной ключ) и Путь файла" в отдельности

Шаг 2) Создайте копию существующего файла с помощью модуля Shutil.
Мы используем модуль Shutil для создания копии существующего файла. Здесь мы создавали копию существующего файла «guru99.txt».

Скопируйте файл в Python

Код Пояснение

  • Возьмите исходное имя файла «guru99.txt» и добавьте буквы .bak в конце «guru99.txt.bak». Это имя с расширением .bak будет нашей копией-дубликатом.
  • А затем мы собираемся использовать функцию копирования утилиты для копирования из источника в место назначения.
  • Когда вы запустите код, вы увидите, что в правой части панели создается дубликат файла с расширением .bak.

Шаг 3) Копирование метаданных, связанных с файлом, разрешением файла и другой информацией.
Функция копирования копирует только содержимое файла, но не другую информацию. Копировать мета-данные связанный с файлом, разрешениями на файл и другой информацией, которую вы должны использовать»копистат» функция. Прежде чем запустить этот код, нам нужно удалить файл копии «guru99.text.bak».

Скопируйте файл в Python

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

Скопируйте файл в Python

Вот код

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

Шаг 4) Получить информацию
Вы можете получить информацию о последнем измененном текстовом файле.

Скопируйте файл в Python

  • Строка кода № 15. В ней указывается день, дата, месяц, год и время последнего изменения файла .txt (guru99). Мы используем модуль пути, чтобы получить время модификации файла.tails, а затем мы собираемся использовать классы времени c функция времени чтобы преобразовать это в читаемое время. Итак, когда мы запустим код, мы увидим, что файл guru99.txt последний раз изменялся. Пн, янв 8th в 13:35 2018.
  • Строка кода № 17. Она делает то же самое, предоставляя информацию об изменении файла, но имеет другой формат для ее представления. Здесь мы используем Получить функцию времени модификации (path.getmtime("guru99.txt")). Теперь вместо использования функции времени c мы собираемся использовать Из функции отметки времени и собираюсь создать объект даты и времени. В выводе вы можете увидеть, что сведения о времени изменения файла распечатаны в другом формате. 2018-01-08, 13:35:51.334072

Вот код

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

Выводы

  • Чтобы создать копию существующего файла с помощью кода Shutil.copy (источник, dst)
  • Чтобы скопировать всю информацию исходного файла в дубликат файла, например разрешение файла, время модификации или информация метаданных с помощью кода Shutil.copystat(src,dst)