Zkopírovat soubor do Python: metoda Shutil.copy(), Shutil.copystat().

Python Metody kopírování souborů

Python poskytuje vestavěné funkce pro snadné kopírování souborů pomocí Operanástroje System Shell.

Následující příkaz se používá ke kopírování souboru

shutil.copy(src,dst)

Následující příkaz se používá ke kopírování souboru s informacemi metadat

shutil.copystat(src,dst)

Jak zkopírovat soubor do Python

Zde jsou kroky ke zkopírování souboru Python pomocí metody Shutil copy():

Krok 1) Zachyťte původní cestu v aktuálním adresáři
Než zkopírujeme soubor, musíme získat cestu k původnímu souboru v aktuálním adresáři. V kódu -

  1. Deklarování proměnné
  2. Použití funkce rozdělení na proměnnou

Zkopírujte soubor do Python

Vysvětlení kódu

  • Nejprve zkontrolujeme, zda náš soubor „guru99.txt“ existuje nebo ne. Protože jsme dříve vytvořili soubor guru99.txt, víme, že existuje, a budeme pokračovat s kódem
  • Cestu k souboru uložíme do proměnné “src“, pokud váš soubor existuje
  • Jakmile získáme cestu, oddělíme cestu a název souboru
  • K tomu použijeme rozdělení path.split funkce na zdrojové proměnné
  • Kód se po spuštění vytiskne „Název souboru"A"cesta k souboru“ samostatně

Krok 2) Vytvořte kopii našeho stávajícího souboru pomocí modulu Shutil
K vytvoření kopie existujícího souboru používáme modul Shutil. Zde jsme vytvořili kopii našeho stávajícího souboru „guru99.txt“.

Zkopírujte soubor do Python

Vysvětlení kódu

  • Vezměte původní název souboru „guru99.txt“ a na konec „guru99.txt.bak“ přidejte písmena .bak. Toto jméno s příponou .bak bude naší duplicitní kopií
  • A pak použijeme funkci kopírování nástroje ke kopírování ze zdroje do cíle
  • Po spuštění kódu uvidíte na pravé straně panelu vytvořený duplicitní soubor s příponou .bak

Krok 3) Zkopírujte metadata spojená se souborem, oprávnění k souboru a další informace
Funkce kopírování zkopíruje pouze obsah souboru, ale žádné další informace. Kopírovat metadata spojené se souborem, oprávnění k souboru a další informace, které musíte použít “copystatfunkce “. Než spustíme tento kód, musíme smazat náš kopírovaný soubor „guru99.text.bak“.

Zkopírujte soubor do Python

Jakmile soubor smažete a spustíte program, vytvoří se kopie vašeho souboru .txt, ale tentokrát se všemi informacemi, jako je oprávnění k souboru, čas úpravy a informace o metadatech. Informace můžete ověřit v prostředí svého OS.

Zkopírujte soubor do Python

Zde je kód

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()

Krok 4) Získejte informace
Můžete načíst informace o naposledy upraveném textovém souboru

Zkopírujte soubor do Python

  • Řádek kódu #15 – říká den, datum, měsíc, rok a čas, kdy byl soubor .txt (guru99) naposledy upraven. K získání podrobností o čase úpravy souboru používáme modul cesty a pak použijeme časové třídy c funkce času převést to na čitelný čas. Takže když spustíme kód, můžeme vidět, že soubor guru99.txt byl naposledy upraven dne Po, 8. lednath ve 13:35 2018.
  • Řádek kódu č. 17 - Dělá totéž a poskytuje informace o úpravě souboru, ale má jiný formát, který je reprezentuje. Zde používáme Funkce Get Modification Time (cesta.getmtime(“guru99.txt”)). Nyní místo použití časové funkce c použijeme Z funkce Time Stamp a vytvoříme objekt data a času. Na výstupu můžete vidět, že je vytištěn detail času úpravy souboru v jiném formátu 2018-01-08, 13:35:51.334072

Zde je kód

#
# 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()

Shrnutí

  • Chcete-li vytvořit kopii existujícího souboru pomocí kódu Shutil.copy (src,dst)
  • Chcete-li zkopírovat všechny informace původního souboru do duplicitního souboru, jako je oprávnění k souboru, čas úpravy nebo informace o metadatech pomocí kódu shutil.copystat(src,dst)