Python Copy File Methods
Python tillhandahåller inbyggda funktioner för att enkelt kopiera filer med operativsystemets skalverktyg.
Följande kommando används för att kopiera fil
shutil.copy(src,dst)
Följande kommando används för att kopiera fil med metadatainformation
shutil.copystat(src,dst)
Här är stegen för att kopiera filen i Python
Steg 1) Innan vi kopierar en fil måste vi ta vägen till originalfilen i den aktuella katalogen. I koden -
- Deklarerande variabel
- Tillämpar delningsfunktion på variabel
Kodförklaring
- Först ska vi kontrollera att vår "guru99.txt" -fil finns eller inte. Eftersom vi har skapat guru99.txt-filen tidigare vet vi att den finns och vi kommer att fortsätta vidare med koden
- Vi sparar filvägen i variabeln " src " om din fil finns
- När vi väl har fått vägen kommer vi att separera sökvägen och filnamnet
- För det ska vi använda split-
path.split
funktionen på källvariabeln - Kod när den körs skriver ut " filnamn " och " filsökväg " separat
Steg 2) Vi använder Shutil Module för att skapa en kopia av den befintliga filen. Här brukade vi skapa en kopia av vår befintliga fil "guru99.txt."
Kodförklaring
- Ta det ursprungliga filnamnet "guru99.txt" och lägg till bokstäver .bak i slutet "guru99.txt.bak". Det här namnet med .bak-tillägget kommer att bli vår kopia
- Och sedan ska vi använda verktyget kopiera funktion för att kopiera från källa till destinationen
- När du kör koden ser du en dubblettfil med .bak-tillägget skapas på höger sida av panelen
Steg 3) Kopieringsfunktionen kopierar endast innehållet i filen men ingen annan information. För att kopiera metadata som är associerade med filen, filbehörighet och annan information måste du använda " copystat " -funktionen. Innan vi kör den här koden måste vi ta bort vår kopieringsfil "guru99.text.bak".
När du har tagit bort filen och kört programmet kommer den att skapa en kopia av din .txt-fil men den här gången med all information som filtillstånd, ändringstid och metadatainformation . Du kan gå till ditt OS-skal för att verifiera informationen.
Här är koden
import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()
Steg 4) Du kan hämta informationen om den senast modifierade textfilen
- Kodrad # 15- Den berättar dag, datum, månad, år och tid när .txt-filen (guru99) senast ändrades. Vi använder sökmodulen för att få information om filändringstid och sedan ska vi använda tidsklasserna c-tidsfunktionen för att konvertera den till en läsbar tid. Så när vi köra koden, kan vi se filen guru99.txt ändrades senast den mån, 8 januari : e vid 13:35 2018.
- Kodrad # 17- Det gör samma sak som ger information om filändring, men det har ett annat format för att representera det. Här använder vi funktionen Get Modification Time (path.getmtime ("guru99.txt")). Nu istället för att använda c-tidsfunktionen kommer vi att använda Från tidsstämpelfunktionen och konstruera ett datumtidobjekt. I utdata kan du se filändringens tidsdetaljer skrivs ut i olika format 2018-01-08, 13: 35: 51.334072
Här är koden
## Example file for working with o.s path moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = time.ctime(path.getmtime("guru99.txt.bak"))print(t)print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))if __name__ == "__main__":main()
Sammanfattning
- För att skapa en kopia av den befintliga filen med kod shutil.copy (src, dst)
- För att kopiera all information i originalfilen för att duplicera fil som filbehörighet, modifieringstid eller metadatainformation med hjälp av kod shutil.copystat (src, dst)