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

⚡ Chytré shrnutí

Python Kopíruje soubory pomocí modulu shutil. shutil.copy() duplikuje obsah souboru, zatímco shutil.copystat() také kopíruje oprávnění, čas úprav a metadata. Zde se seznámíte s oběma metodami na podrobném příkladu.

  • ???? shutil.copy(): shutil.copy(src, dst) zkopíruje obsah souboru do nového cílového umístění.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) také kopíruje oprávnění, čas a metadata.
  • 🤖 Pomoc s umělou inteligencí: Nástroje umělé inteligence, jako je Copilot, generují kód pro kopírování Shutil okamžitě.

Zkopírovat soubor do Python

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

Code Vysvětlení

  • 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é
  • Code při spuštění se vypíše „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

Code Vysvětlení

  • 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

  • Code Řádek č. 15 – Uvádí den, datum, měsíc, rok a čas poslední úpravy souboru .txt (guru99). Pomocí modulu path získáme podrobnosti o čase úpravy souboru a poté 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.
  • Code Řádek č. 17 – Dělá totéž, poskytuje informace o úpravě souboru, ale má jiný formát pro jejich reprezentaci. 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()

Nejčastější dotazy

Importujte soubor shutil a poté zavolejte funkci shutil.copy(src, dst) pro zkopírování obsahu souboru. Pro zkopírování jeho metadat použijte funkci shutil.copystat().

shutil.copystat(src, dst) zkopíruje oprávnění souboru, čas úpravy a metadata do cíle, ale ne jeho obsah.

shutil.copy() kopíruje obsah a oprávnění, zatímco shutil.copy2() také uchovává metadata, jako jsou časová razítka. Pro zachování času úpravy použijte copy2().

shutil.copy() přijímá cílový adresář a kopíruje oprávnění; shutil.copyfile() potřebuje úplnou cestu k souboru a kopíruje pouze obsah.

Pro rekurzivní kopírování celého adresáře a jeho obsahu použijte shutil.copytree(src, dst). Cílová složka nesmí již existovat.

Asistenti umělé inteligence, jako je GitHub Copilot, automaticky doplňují volání shutil.copy() a copystat() a navrhují pro váš případ copy2() nebo copytree().

Ano. Nástroje s umělou inteligencí generují zálohovací rutiny, vybírají správnou metodu shutil a přidávají kontroly existence před kopírováním souborů nebo složek.

Pro získání časového razítka použijte os.path.getmtime(path) a poté jej převeďte pomocí time.ctime() nebo datetime.fromtimestamp() na čitelné datum.

Shrňte tento příspěvek takto: