Python COPY файл, използвайки shutil.copy (), shutil.copystat ()

Съдържание:

Anonim

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

Python предоставя вградени функции за лесно копиране на файлове с помощта на помощните програми на операционната система Shell.

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

shutil.copy(src,dst)

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

shutil.copystat(src,dst)

Ето стъпките за копиране на файл в Python

Стъпка 1) Преди да копираме файл, трябва да получим пътя към оригиналния файл в текущата директория. В кода -

  1. Деклариране на променлива
  2. Прилагане на функция за разделяне на променлива

Обяснение на кода

  • Първо ще проверим дали нашият файл "guru99.txt" съществува или не. Тъй като сме създали файл guru99.txt по-рано, знаем, че той съществува и ще продължим с кода
  • Съхраняваме пътя на файла в променливата " src ", ако вашият файл съществува
  • След като получим пътя, ще отделим пътя и името на файла
  • За това ще използваме функцията split path.splitна променливата източник
  • Кодът при изпълнение се отпечатва отделно „ име на файл “ и „ път до файла

Стъпка 2) Използваме Shutil Module, за да създадем копие на съществуващия файл. Тук използвахме да създадем копие на съществуващия ни файл „guru99.txt“.

Обяснение на кода

  • Вземете оригиналното име на файл "guru99.txt" и добавете букви .bak в края "guru99.txt.bak". Това име с разширение .bak ще бъде нашето дублирано копие
  • И тогава ще използваме функцията за копиране на помощната програма, за да копираме от източника до местоназначението
  • Когато стартирате кода, ще видите дублиран файл с разширение .bak, създаден в дясната страна на панела

Стъпка 3) Функция за копиране копира само съдържанието на файла, но няма друга информация. За да копирате метаданни, свързани с файла, разрешение за файл и друга информация, трябва да използвате функцията " copystat ". Преди да стартираме този код, трябва да изтрием нашия файл за копиране "guru99.text.bak".

След като изтриете файла и стартирате програмата, той ще създаде копие на вашия .txt файл, но този път с цялата информация, като разрешение за файл, време за модификация и информация за метаданни . Можете да отидете в черупката на вашата OS, за да проверите информацията.

Ето кода

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) е последно променен. Използваме модула за път, за да получим подробности за времето за модификация на файла, а след това ще използваме функцията за времеви класове c time, за да преобразуваме това в четливо време. Така че, когато стартираме кода, можем да видим файла guru99.txt е последно модифициран в понеделник, 8 януари в 13:35 2018.
  • Код ред # 17 - Той прави същото, като дава информация за модификация на файл, но има различен формат, за да го представи. Тук използваме функцията Get Modification Time (path.getmtime ("guru99.txt")). Сега вместо да използваме функцията c time, ще използваме функцията From Time Stamp и ще конструираме обект за дата и час. В изхода можете да видите, че подробностите за времето за модификация на файла се отпечатват в различен формат 08.01.2018 г., 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)