Articles

Kopiera en fil i Python

i våra tidigare handledning lärde vi oss några Python-filoperationer som att läsa, skriva och radera. Låt oss lära oss att kopiera en fil i Python i den här handledningen.

Vi kan kopiera en fil i Python med olika metoder under de nedan nämnda modulerna,

  • shutil modul
  • os modul
  • subprocess modul

i denna handledning kommer vi att lära oss att använda de olika metoderna som tillhandahålls av ovanstående moduler för att kopiera en fil i Python.

1. shutil-modulen för att kopiera en fil i Python

shutil – modulen ger några lättanvända metoder som vi kan ta bort och kopiera en fil i Python. Låt oss titta på de olika metoderna som definieras under denna modul som specifikt används för kopiering.

1. copyfileobj ()

copyfileobj() – metoden kopierar innehållet i källfilen till målfilen med respektive filobjekt. Låt oss ta en titt på koden nedan,

import shutilsrc_file_obj=open('src.txt', 'rb')targ_file_obj= open('targ.txt' , 'wb')shutil.copyfileobj( src_file_obj , targ_file_obj )

Obs: att filobjekten ska peka på 0-positionerna (startposition) för både respektive källa och målfiler, för att kopiera hela innehållet.

2. copyfile ()

metodencopyfile() kopierar innehållet från källan till målfilen med hjälp av sökvägarna. Den returnerar målfilens sökväg. Målfilens sökväg måste vara skrivbar annars skulle ett OSerror-undantag inträffa.

import shutilshutil.copyfile( 'src.txt' , 'targ.txt' )

det är att komma ihåg att metoden endast tillåter användning av filvägar och inte kataloger.

3. kopiera ()

denna metod kopierar källfilen till målfilen eller målkatalogen. Till skillnad från copyfile() tillåter metoden copy() användningen av målkatalogen som ett argument och kopierar även filbehörigheterna. copy() returnerar sökvägen till målfilen efter kopiering av innehållet.

import shutilshutil.copy('/Users/test/file.txt', '/Users/target/')

en fil med namnet ’fil.txt ’ skapas i måldestinationen med allt innehåll och behörigheter kopierade från ’/användare/test/fil.txt’.

4. copy2 ()

copy2() – metoden används exakt på samma sätt som förcopy() – metoden. De fungerar också på samma sätt, förutom att copy2() kopierar också metadata från källfilen.

import shutilshutil.copy2('/Users/test/file.txt', '/Users/target/')

2. os-modul för att kopiera en fil i Python

1. popen ()

popen() – metoden skapar ett rör till kommandot, cmd. Metoden returnerar ett filobjekt anslutet till cmd-röret. Ta en titt på koden nedan,

#for Windowsimport osos.popen('copy src.txt targ.txt' )
#for Linuximport osos.popen('cp src.txt targ.txt' )

med den här metoden kan vi inte bara kopiera filer utan också utföra andra vanliga kommandon.

2. system ()

system() – metoden anropar direkt och kör ett kommandoargument i ett underskal. Dess returvärde beror på operativsystemet som kör programmet. För Linux är det utgångsstatus, medan för Windows är det returvärdet av systemskalet.

#for Linuximport osos.system(' cp src.txt targ.txt' )
#for Windowsimport osos.system(' copy src.txt targ.txt' )

3. underprocess modul för att kopiera en fil i Python

1. Ring ()

call() metod som liknaros.system() anropar eller kör direkt kommandot som skickas som ett argument till funktionen.

# In Linuximport subprocesssubprocess.call('cp source.txt target.txt', shell=True)