Fájl másolása Python: shutil.copy(), shutil.copystat() metódus

⚡ Okos összefoglaló

Python A shutil modullal fájlokat másolhatunk. A shutil.copy() lemásolja a fájl tartalmát, míg a shutil.copystat() a jogosultságokat, a módosítás idejét és a metaadatokat is másolja. Itt lépésről lépésre bemutatjuk mindkét módszert.

  • 📋 shutil.copy(): A shutil.copy(src, dst) függvény egy fájl tartalmát egy új helyre másolja.
  • 🗂️ shutil.copystat(): A shutil.copystat(src, dst) függvény a jogosultságokat, az időt és a metaadatokat is másolja.
  • 🤖 MI segítség: Az olyan mesterséges intelligencia eszközök, mint a Copilot, azonnal generálnak shutil másolási kódot.

Fájl másolása Python

Python Fájlmódszerek másolása

Python beépített funkciókat biztosít a fájlok egyszerű másolásához a Operating System Shell segédprogramok.

A következő parancs a fájl másolására szolgál

shutil.copy(src,dst)

A következő parancs a metaadat-információkat tartalmazó fájl másolására szolgál

shutil.copystat(src,dst)

Hogyan másoljunk be egy fájlt Python

Itt vannak a lépések a fájl másolásához Python a shutil copy() metódussal:

Step 1) Rögzítse az eredeti elérési utat az aktuális könyvtárban
Mielőtt másolnánk egy fájlt, meg kell szereznünk az eredeti fájl elérési útját az aktuális könyvtárban. A kódban –

  1. Változó deklarálása
  2. Split függvény alkalmazása változóra

Másoljon be egy fájlt Python

Code Magyarázat

  • Először is ellenőrizni fogjuk, hogy a „guru99.txt” fájlunk létezik-e vagy sem. Mivel korábban létrehoztuk a guru99.txt fájlt, tudjuk, hogy létezik, és folytatjuk a kóddal
  • A fájl elérési útját a " változóban tároljuksrc” ha a fájlja létezik
  • Miután megkaptuk az elérési utat, szétválasztjuk az elérési utat és a fájlnevet
  • Ehhez a felosztást fogjuk használni path.split függvény a forrásváltozón
  • Code végrehajtáskor a következő jelenik meg: „fájl neve"És"fájl elérési út” külön-külön

Step 2) Készítsen másolatot a meglévő fájlunkról a shutil modul segítségével
A Shutil Module segítségével másolatot készítünk a meglévő fájlról. Itt a meglévő „guru99.txt” fájlunkról készítettünk másolatot.

Másoljon be egy fájlt Python

Code Magyarázat

  • Vegyük az eredeti „guru99.txt” fájlnevet, és a „guru99.txt.bak” végéhez adjunk hozzá .bak betűket. Ez a .bak kiterjesztésű név lesz a másolatunk
  • Ezután a segédprogram másolási funkcióját fogjuk használni a forrásból a célhelyre történő másoláshoz
  • A kód futtatásakor a panel jobb oldalán megjelenik egy .bak kiterjesztésű másolat.

Step 3) Másolja a fájlhoz kapcsolódó metaadatokat, a fájlengedélyeket és egyéb információkat
A másolás funkció csak a fájl tartalmát másolja, más információkat nem. Másolni meta-adatok a fájlhoz, a fájlengedélyhez és az Ön által használandó egyéb információkhoz kapcsolódik "copystat” funkciót. A kód futtatása előtt törölnünk kell a „guru99.text.bak” másolt fájlunkat.

Másoljon be egy fájlt Python

Miután törölte a fájlt és futtatta a programot, az létrehoz egy másolatot a .txt fájlról, de ezúttal minden olyan információval, mint pl. fájlengedély, módosítási idő és metaadatok. Az információk ellenőrzéséhez lépjen az operációs rendszer héjába.

Másoljon be egy fájlt Python

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

Step 4) Szerezze be az információkat
Lekérheti az utoljára módosított szövegfájl adatait

Másoljon be egy fájlt Python

  • Code 15. sor – Megjeleníti a .txt fájl (guru99) utolsó módosításának napját, dátumát, hónapját, évét és időpontját. A path modult használjuk a fájl módosítási idejének lekéréséhez, majd a következőt fogjuk használni: időosztályok c időfüggvény hogy ezt olvasható idővé alakítsa át. Tehát a kód futtatásakor láthatjuk, hogy a guru99.txt fájlt legutóbb módosították Hétfő, január 8th 13. 35:2018-kor.
  • Code 17. sor – Ugyanazt a funkciót látja el, információt ad a fájlmódosításról, de más formátumban ábrázolja. Itt a következőt használjuk: Get Modification Time funkció (path.getmtime(“guru99.txt”)). Most a c idő függvény használata helyett fogjuk használni Az Időbélyeg funkcióból és egy dátum-idő objektumot fog létrehozni. A kimeneten láthatja, hogy a fájlmódosítási idő részletei különböző formátumban vannak kinyomtatva 2018-01-08, 13:35:51.334072

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

GYIK

Importáld a shutil fájlt, majd hívd meg a shutil.copy(src, dst) függvényt a fájl tartalmának másolásához. A shutil.copystat() függvénnyel másolhatod a metaadatokat is.

A shutil.copystat(src, dst) függvény átmásolja egy fájl jogosultságait, módosítási idejét és metaadatait a célhelyre, de a tartalmát nem.

A shutil.copy() függvény a tartalmat és az engedélyeket másolja, míg a shutil.copy2() függvény a metaadatokat, például az időbélyegeket is megőrzi. A copy2() függvény segítségével megőrizhető a módosítás időpontja.

A shutil.copy() függvény elfogad egy könyvtárat és lemásolja a jogosultságokat; a shutil.copyfile() függvénynek teljes fájlútvonalra van szüksége, és csak a tartalmat másolja.

A shutil.copytree(src, dst) függvénnyel rekurzívan másolhatsz egy teljes könyvtárat és annak tartalmát. A célmappának nem szabad léteznie.

Az olyan mesterséges intelligencia asszisztensek, mint a GitHub Copilot, automatikusan kiegészítik a shutil.copy() és copystat() hívásokat, és a copy2() vagy a copytree() függvényeket javasolják az esetedhez.

Igen. A mesterséges intelligencia által vezérelt eszközök biztonsági mentési rutinokat generálnak, kiválasztják a megfelelő shuttil módszert, és létezési ellenőrzéseket adnak hozzá a fájlok vagy mappák másolása előtt.

Használd az os.path.getmtime(path) függvényt az időbélyeg lekéréséhez, majd alakítsd át a time.ctime() vagy a datetime.fromtimestamp() függvénnyel egy olvasható dátumhoz.

Foglald össze ezt a bejegyzést a következőképpen: