Файл копирования Python с использованием shutil.copy (), shutil.copystat ()

Содержание:

Anonim

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

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

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

shutil.copy(src,dst)

Следующая команда используется для копирования файла с информацией о метаданных.

shutil.copystat(src,dst)

Вот шаги для копирования файла в Python

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

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

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

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

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

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

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

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

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

Вот код

import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()

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

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

Вот код

## Example file for working with o.s path moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = 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)