Kopeeri fail sisse Python: shutil.copy(), shutil.copystat() meetod

Python Failide kopeerimise meetodid

Python pakub sisseehitatud funktsioone failide hõlpsaks kopeerimiseks OperaSystem Shelli utiliidid.

Faili kopeerimiseks kasutatakse järgmist käsku

shutil.copy(src,dst)

Järgmist käsku kasutatakse metaandmetega faili kopeerimiseks

shutil.copystat(src,dst)

Kuidas faili sisse kopeerida Python

Siin on juhised faili kopeerimiseks Python kasutades shutil copy() meetodit:

Step 1) Jäädvustage algne tee praeguses kataloogis
Enne faili kopeerimist peame leidma praeguses kataloogis algse faili tee. Koodis -

  1. Muutuja deklareerimine
  2. Jagamisfunktsiooni rakendamine muutujale

Kopeerige fail sisse Python

Koodi selgitus

  • Kõigepealt kontrollime, kas fail “guru99.txt” on olemas või mitte. Kuna oleme faili guru99.txt varem loonud, teame, et see on olemas ja jätkame koodiga
  • Salvestame failitee muutujas "src", kui teie fail on olemas
  • Kui oleme tee kätte saanud, eraldame tee ja failinime
  • Selleks kasutame jaotust path.split funktsioon lähtemuutujal
  • Täitmisel prinditakse kood välja "faili nimi"Ja"faili teekond” eraldi

Step 2) Looge meie olemasolevast failist koopia, kasutades shutili moodulit
Kasutame Shutil moodulit olemasoleva faili koopia loomiseks. Siin kasutasime oma olemasoleva faili "guru99.txt" koopia loomist.

Kopeerige fail sisse Python

Koodi selgitus

  • Võtke algne failinimi "guru99.txt" ja lisage "guru99.txt.bak" lõppu tähed .bak. See nimi laiendiga .bak on meie koopia
  • Ja siis hakkame allikast sihtkohta kopeerimiseks kasutama utiliidi kopeerimisfunktsiooni
  • Kui käivitate koodi, näete paneeli paremas servas duplikaatfaili laiendiga .bak.

Step 3) Kopeerige failiga seotud metaandmed, failiload ja muu teave
Kopeerimisfunktsioon kopeerib ainult faili sisu, kuid mitte muud teavet. Kopeerimiseks metaandmed seotud faili, faililoa ja muu teabega, mida peate kasutama "copystat” funktsioon. Enne selle koodi käivitamist peame kustutama oma koopiafaili “guru99.text.bak”.

Kopeerige fail sisse Python

Kui olete faili kustutanud ja programmi käivitanud, loob see teie .txt-failist koopia, kuid seekord kogu teabega, nagu faili luba, muutmise aeg ja metaandmete teave. Teabe kontrollimiseks võite minna oma OS-i kesta.

Kopeerige fail sisse Python

Siin on kood

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) Hankige teave
Saate hankida teavet viimati muudetud tekstifaili kohta

Kopeerige fail sisse Python

  • Koodirida#15 – see ütleb päeva, kuupäeva, kuu, aasta ja kellaaja, millal .txt-faili (guru99) viimati muudeti. Faili muutmise aja üksikasjade hankimiseks kasutame teemoodulit ja seejärel kasutame ajaklassid c ajafunktsioon et teisendada see loetavaks ajaks. Nii et kui me koodi käivitame, näeme faili guru99.txt, mida viimati muudeti Esmaspäev, 8. jaanth kell 13:35 2018.
  • Koodirida #17 – see annab sama asja, andes teavet faili muutmise kohta, kuid selle esitamiseks on erinev vorming. Siin kasutame Hankige muutmisaja funktsioon (path.getmtime("guru99.txt"). Nüüd hakkame kasutama c-ajafunktsiooni asemel Ajatempli funktsioonist ja konstrueerima kuupäeva-aja objekti. Väljundis näete, kuidas faili muutmise aja üksikasjad on välja trükitud erinevas vormingus 2018-01-08, 13:35:51.334072

Siin on kood

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

kokkuvõte

  • Olemasolevast failist koopia loomiseks kasutage koodi shutil.copy (src,dst)
  • Kogu algse faili teabe kopeerimiseks duplikaatfaili nagu faili luba, muutmise aeg või metaandmete teave kasutades koodi shutil.copystat(src,dst)