От автора: Python предоставляет встроенные функции для простого копирования файлов с помощью утилит операционной системы.
Следующая команда используется для копирования файла:
shutil.copy(src,dst)
Следующая команда используется для копирования файла с информацией метаданных:
shutil.copystat(src,dst)
Вот последовательность копирования файла в Python.
Шаг 1) Прежде чем мы скопируем файл, нам нужно получить путь к исходному файлу в текущем каталоге.
Объявляем переменную
Применяем функцию разделения к переменной
Объяснение кода:
Сначала мы проверим, существует ли файл «guru99.txt» или нет. Поскольку мы создали файл guru99.txt ранее, мы знаем, что он существует, и мы продолжим работу с кодом
Мы сохраняем путь к файлу в переменной src,если файл существует
Когда мы получим путь, мы собираемся отделить путь и имя файла
Для этого мы будем использовать функцию path.split для исходной переменной
Код при выполнении выводит «имя файла» и «путь к файлу» отдельно
Шаг 2) Мы используем Shutil Module для создания копии существующего файла. Здесь мы использовали его для создания копии существующего файла «guru99.txt.»
Объяснение кода:
Возьмите оригинальное имя файла «guru99.txt» и добавьте буквы .bak в конце «guru99.txt.bak». Это имя с расширением .bak будет дубликатом
И после этого мы используем функцию копирования утилиты для копирования из источника в место назначения
Когда вы запустите код, вы увидите дубликат файла с расширением .bak, созданный в правой части панели.
Шаг 3) Функция копирования копирует только содержимое файла, но не другую информацию. Чтобы скопировать метаданные, связанные с файлом, права доступа к файлу и другую информацию, вам нужно использовать функцию «copystat». Перед запуском этого кода нам нужно удалить файл копии «guru99.text.bak».
После того, как вы удалили файл и запустили программу, она создаст копию.txt файла, но на этот раз со всей информацией, такой как доступы, время изменения и метаданные. Вы можете перейти в оболочку ОС, чтобы проверить информацию.
Вот код:
import os import shutil from os import path def main(): # создаем дубликат существующего файла if path.exists("guru99.txt"): # получаем путь к файлу в текущем каталоге src = path.realpath("guru99.txt"); #выделяем путь из фильтра head, tail = path.split(src) print("path:" +head) print("file:" +tail) #давайте создадим копию, добавив к имени "bak" dst = src+".bak" # теперь используем оболочку, чтобы создать копию файла shutil.copy(src, dst) #копируем доступы, время изменения shutil.copystat(src,dst) if __name__=="__main__": main()
Шаг 4) Вы можете получить информацию о последнем изменении текстового файла.
Строка кода 15 сообщает день, дату, месяц, год и время последнего изменения файла .txt (guru99). Мы используем модуль path для получения сведений о времени изменения файла, а затем функцию time с классами времени, чтобы преобразовать ее в читаемое время. Поэтому, когда мы запускаем код, мы можем увидеть последнее изменение файла guru99.txt Mon, Jan 8th at 13:35 2018.
Строка кода 17 — она делает то же самое, предоставляя информацию о модификации файла, но имеет другой формат для ее представления. Здесь мы используем функцию Get Modification Time(path.getmtime(«guru99.txt»)). Теперь вместо использования функции времени мы собираемся использовать функцию From Time Stamp и получаем объект даты и времени. В выводе вы можете увидеть, что информация об изменении файла выводится в другом формате 2018-01-08, 13: 35: 51.334072
Вот код:
# # Пример файла для работы модулем o.s path import os from os import path import datetime from datetime import date, time, timedelta import time def main(): # Получаем время изменения 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(src, dst)
Чтобы скопировать всю информацию из исходного файла, такую как доступы, время изменения или метаданные, используйте код shutil.copystat(src, dst)
Источник: https://www.guru99.com
Редакция: Команда webformyself.