Kopioi tiedosto sisään Python: shutil.copy(), shutil.copystat() -metodi

⚡ Älykäs yhteenveto

Python kopioi tiedostoja shutil-moduulilla. shutil.copy() kopioi tiedoston sisällön, kun taas shutil.copystat() kopioi myös käyttöoikeudet, muokkausajan ja metatiedot. Tässä opit molemmat menetelmät vaiheittaisen esimerkin avulla.

  • 📋 shutil.copy(): shutil.copy(src, dst) kopioi tiedoston sisällön uuteen kohteeseen.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) kopioi myös käyttöoikeudet, ajan ja metatiedot.
  • 🤖 Tekoälyn apu: Tekoälytyökalut, kuten Copilot, luovat shuttil-kopiokoodin välittömästi.

Kopioi tiedosto sisään Python

Python Kopioi tiedostomenetelmät

Python sisältää sisäänrakennetut toiminnot tiedostojen kopioimiseen helposti käyttämällä OperaSystem Shell -apuohjelmat.

Seuraavaa komentoa käytetään tiedoston kopioimiseen

shutil.copy(src,dst)

Seuraavaa komentoa käytetään kopioimaan tiedosto metadatatiedoilla

shutil.copystat(src,dst)

Kuinka kopioida tiedosto sisään Python

Tässä on vaiheet tiedoston kopioimiseksi Python käyttämällä shutil copy() -menetelmää:

Vaihe 1) Tallenna alkuperäinen polku nykyiseen hakemistoon
Ennen kuin kopioimme tiedoston, meidän on saatava polku alkuperäiseen tiedostoon nykyisessä hakemistossa. Koodissa -

  1. Muuttujan ilmoittaminen
  2. Split-funktion käyttäminen muuttujaan

Kopioi tiedosto sisään Python

Code Selitys

  • Ensin aiomme tarkistaa, onko "guru99.txt" -tiedostomme olemassa vai ei. Koska olemme luoneet guru99.txt-tiedoston aiemmin, tiedämme sen olevan olemassa ja jatkamme koodin kanssa
  • Tallennamme tiedostopolun muuttujaan "src", jos tiedostosi on olemassa
  • Kun saamme polun, erotamme polun ja tiedostonimen
  • Tätä varten aiomme käyttää jakoa path.split toiminto lähdemuuttujassa
  • Code suoritettaessa tulostuu ”tiedoston nimi"Ja"tiedostopolku" erikseen

Vaihe 2) Luo kopio olemassa olevasta tiedostostamme käyttämällä shutil-moduulia
Käytämme Shutil-moduulia luodaksemme kopion olemassa olevasta tiedostosta. Täällä loimme kopion olemassa olevasta tiedostostamme "guru99.txt".

Kopioi tiedosto sisään Python

Code Selitys

  • Ota alkuperäinen tiedostonimi "guru99.txt" ja lisää kirjaimet .bak loppuun "guru99.txt.bak". Tämä nimi .bak-tunnisteella on kopiomme
  • Ja sitten aiomme käyttää apuohjelman kopiointitoimintoa kopioidaksemme lähteestä kohteeseen
  • Kun suoritat koodin, näet paneelin oikealla puolella luodun kaksoistiedoston .bak-tunnisteella.

Vaihe 3) Kopioi tiedostoon liittyvät metatiedot, tiedoston käyttöoikeudet ja muut tiedot
Kopioi-toiminto kopioi vain tiedoston sisällön, mutta ei muita tietoja. Kopioida metatiedot liittyy tiedostoon, tiedoston käyttöoikeuksiin ja muihin tietoihin, joita sinun on käytettävä "copystat”-toiminto. Ennen kuin suoritamme tämän koodin, meidän on poistettava kopiotiedostomme "guru99.text.bak".

Kopioi tiedosto sisään Python

Kun poistat tiedoston ja suoritat ohjelman, se luo kopion .txt-tiedostostasi, mutta tällä kertaa kaikki tiedot, kuten tiedostojen käyttöoikeudet, muokkausaika ja metatiedot. Voit tarkistaa tiedot siirtymällä käyttöjärjestelmän kuoreen.

Kopioi tiedosto sisään Python

Tässä on koodi

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

Vaihe 4) Hae tiedot
Voit hakea viimeksi muokatun tekstitiedoston tiedot

Kopioi tiedosto sisään Python

  • Code Rivi 15 - Se kertoo päivän, päivämäärän, kuukauden, vuoden ja kellonajan, jolloin .txt-tiedostoa (guru99) on viimeksi muokattu. Käytämme path-moduulia tiedoston muokkausajan selvittämiseen, ja sitten käytämme aikaluokat c aikafunktio muuntaaksesi sen luettavaksi ajaksi. Joten kun suoritamme koodin, voimme nähdä, että tiedosto guru99.txt on viimeksi muokattu ma, tammikuun 8th klo 13:35 2018.
  • Code Rivi#17 - Se tekee saman asian ja antaa tietoja tiedostomuokkauksista, mutta sillä on eri muoto tiedon esittämiseksi. Tässä käytämme Hanki muokkausaikatoiminto (polku.getmtime("guru99.txt"). Nyt sen sijaan, että käytämme c-aikafunktiota, käytämme Aikaleima-toiminnosta ja aikoo rakentaa päivämäärä-aikaobjektin. Tulosteessa näet tiedoston muokkausajan yksityiskohdat tulostettuna eri muodossa 2018-01-08, 13:35:51.334072

Tässä on koodi

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

UKK

Tuo shutil ja kopioi sitten tiedoston sisältö kutsumalla shutil.copy(src, dst)-funktiota. Kopioi myös sen metatiedot funktiolla shutil.copystat().

shutil.copystat(src, dst) kopioi tiedoston käyttöoikeudet, muokkausajan ja metatiedot kohteeseen, mutta ei sen sisältöä.

shutil.copy() kopioi sisällön ja käyttöoikeudet, kun taas shutil.copy2() säilyttää myös metatiedot, kuten aikaleimat. Käytä copy2()-funktiota säilyttääksesi muokkausajan.

shutil.copy() hyväksyy hakemistokohteen ja kopioi käyttöoikeudet; shutil.copyfile() tarvitsee koko tiedostopolun ja kopioi vain sisällön.

Käytä shutil.copytree(src, dst)-funktiota kopioidaksesi rekursiivisesti koko hakemiston ja sen sisällön. Kohdekansiota ei saa jo olla olemassa.

Tekoälyavustajat, kuten GitHub Copilot, täydentävät shutil.copy()- ja copystat()-kutsuja automaattisesti ja ehdottavat copy2()- tai copytree()-funktioita tapaukseesi.

Kyllä. Tekoälyllä toimivat työkalut luovat varmuuskopiointirutiineja, valitsevat oikean varmuuskopiointimenetelmän ja lisäävät olemassaolotarkistuksia ennen tiedostojen tai kansioiden kopioimista.

Käytä os.path.getmtime(path)-funktiota aikaleiman hakemiseen ja muunna se sitten time.ctime()- tai datetime.fromtimestamp()-funktiolla luettavaan päivämäärään.

Tiivistä tämä viesti seuraavasti: