Vill du förbättra din Python-skicklighet? Då kan du prova att utföra några uppgifter på din dator med Python. Kopiera och klistra in filer från en katalog till en annan med Python är ett roligt sätt att göra detta.

Förutom att det är roligt låter det dig läsa och skriva filer snabbt utan att bli distraherad från din kod. Om du är ny på Python är det en färdighet du kanske fortfarande behöver plocka upp på ett eller annat sätt. Så låt oss ta reda på hur du kopierar filer med Python genom det här inlägget.

Krav för att kopiera filer med Python

Det finns många sätt att kopiera och klistra in filer med Python. Så kravet för att göra det varierar och beror på vilken metod du väljer att använda.

Även om du kanske inte behöver extra moduler för att kopiera filer med Python, kan du fortfarande använda inbyggda bibliotek om du vill.

Till exempel om du vill använda os metod måste du importera den till din kod. Ett av de populäraste sätten att kopiera filer med Python är dock att använda shutil bibliotek.

instagram viewer

Låt oss se hur vi kan använda dessa olika metoder för att kopiera filer med Python.

Hur man kopierar filer med Pythons inbyggda Shutil-bibliotek

De shutil modulen är ett inbyggt och kraftfullt Python-bibliotek för att snabbt läsa och skriva filer i Python.

För att använda den behöver du bara ange hela sökvägen för käll- och målfilerna.

I huvudsak, shutil tar detta format:

shutil.copy ([källkatalog sökväg], [destination katalog sökväg], follow_symlinks = True)

Till exempel använder koden nedan shutil.copy () för att kopiera en fil med namnet copy.txt från en mapp som heter min mapp till en annan som heter destination. Det byter namn på målfilen till newFile.txt:

importera shutil
sourceFile = "C: /Users/some_directories/my_folder/copy.txt"
destinationFile = "C: /Users/some_directories/destination/newFile.txt"
shutil.copy (sourceFile, destinationFile, follow_symlinks = True)

Observera att du kan skriva in din kod valfri kodredigerare. Du kan sedan köra den med kommandoraden.

Du kan dock också använda standard Python Integrated Development Environment (IDLE) om du inte känner till att köra Python via kommandoraden.

Relaterad: Kommandotolken (CMD) Kommandon du måste veta

De shutil.copy metoden kopierar inte källfilens metadata. I grund och botten ser din maskin målfilen som en helt ny och ger den nya metadata.

För att kopiera metadata tillsammans med originalfilen, använd dock shutil.copy2 metod:

importera shutil
shutil.copy2 (sourceFile, destinationFile, follow_symlinks = True)

Metoden ovan bevarar den ursprungliga metadata för den gamla filen i målfilen. Målfilen behåller till exempel det datum då du skapade källfilen, dess storlek och andra attribut.

De följ_symlänkar argument är en symbolisk länkdeklaration som låter shutil följ en absolut väg. Därför måste du inkludera det om käll- och destinationsfilerna finns i olika kataloger.

Men om båda filerna finns i din nuvarande arbetskatalog behöver du inte inkludera en följ_symlänkar. Om du gör det ger Python ett syntaxundantag.

Så om du klistrar in källfilen i din nuvarande arbetskatalog ska din kod se ut så här:

importera shutil
shutil.copy2 (sourceFile, destinationFile)

Förutom att använda shutil-metoderna ovan kan du också använda shutil.copyfile eller shutil.copyfileobj.

Använder sig av shutil.copyfileobj är lite annorlunda eftersom det kräver den inbyggda öppen fungera. Sedan måste du läsa och skriva binärt genom att inkludera "rb" och "wb" argument.

Låt oss se hur shutil.copyfileobj metoden fungerar med samma kataloger som vi använde tidigare:

importera shutil
sourceFilePath = öppen ("C: /Users/some_directories/my_folder/copy.txt", "rb")
destinationFilePath = öppen ("C: /Users/some_directories/destination/newFile.txt", "wb")
shutil.copyfileobj (sourceFilePath, destinationFilePath)

Anteckna det shutil.copyfileobj () kräver inte följ_symlänkar argument.

I alla fall, shutil.copyfile () fungerar på samma sätt .kopiera och .kopia2 gör. De skiljer sig endast obetydligt i sina interna funktioner.

Att använda shutil.copyfile () metod:

importera shutil
sourceFilePath = "C: /Users/some_directories/my_folder/copy.txt"
destinationFilePath = "C: /Users/some_directories/destination/newFile.txt"
shutil.copyfile (sourceFilePath, destinationFilePath)

Hur man kopierar filer med OS-modulen

De os modulen använder två inbyggda metoder för att kopiera filer; os.system () och os.popen () metoder.

De os.system () metoden låter dig imitera kommandoradsmiljön.

En brist på os-metoder är dock att de bara kopierar filer i din nuvarande arbetskatalog.

Att använda os.system () metod på Windows:

importera os
os.system ('copy source.txt destination.txt)

Du kan också använda den inbyggda kopia Windows-terminalkommando:

importera os
os.system ('xcopy source.txt destination.txt)

Att använda os.system metod på Linux, ersätt kopiera med cp:

importera os
os.system ('cp source.txt destination.txt)

Hur man kopierar filer med os.popen-metoden

För att använda den här metoden, byt ut os.system () med os.popen ().

På Windows använder du:

importera os
os.popen ('kopiera source.txt destination.txt)

Som vi gjorde med os.system (), byta ut kopiera med cp att använda den här metoden på Linux:

importera os
os.popen ('cp source.txt destination.txt)

Hur man kopierar filer med Pythons delprocessormodul

Förutom ovanstående metoder kan du också använda underprocess () bibliotek för att kopiera filer i Python:

importera delprocess som sp
sp.call ("copy sourceFile destinationFile", shell = True)

Använd dock på Linux:

importera delprocess som sp
sp.call ("cp sourceFile destinationFile", shell = True)

De underprocess biblioteket använder också subprocess.check_out () metod. Det fungerar på samma sätt underprocess.call () gör:

importera delprocess som sp
sp.check_out ("copy sourceFile destinationFile", shell = True)

På Linux, ersätt kopiera med cp:

importera delprocess som sp
sp.check_out ("cp sourceFile destinationFIle", shell = True)

Liksom OS-metoderna fungerar underprocessmetoder bara med filer i din nuvarande arbetskatalog.

Notera: Du kan också kopiera filer till en mapp om den finns i samma fungerande katalog som källfilen. Allt du behöver göra är att ersätta målfilens namn med namnet på målmappen. Se dock till att målmappen och källfilen finns i din nuvarande arbetskatalog.

Hur man kopierar filer i Python utan att använda bibliotek

Du kan också kopiera filer i Python utan att bero på något bibliotek. Precis som metoden för shutil behöver du bara hela sökvägarna för käll- och målkatalogerna.

Så här uppnår du:

sourcePath = "C: /Users/source_directories/my_folder/copy.txt"
destinationPath = "C: /Users/some_directories/destination_directories/newFile.txt"
med öppen (sourcePath, "rb") som läst:
med öppen (destinationPath, "wb") som minfil:
myfile.write (read.read ())

Till gör koden återanvändbar, kan du ändra den till en funktion:

def copyFile (källa = Ingen, destination = Ingen):
om inte (källa och destination) == Ingen:
med öppen (källa, "rb") som läst:
med öppen (destination, "wb") som minfil:
myfile.write (read.read ())
annan:
skriv ut ("Vänligen ange käll- och destinationsvägar")
copyFile (sourcePath, destinationPath)

Det är allt. Du har precis skapat en återanvändbar filkopierare med Python utan att använda något bibliotek.

Fortsätt automatisera uppgifter med Python

Förutom att hjälpa dig att hålla fokus på din kod när du bygger projekt, kan du kopiera filer med Python bättre förstå filhantering med Python. Att leka med Python-uppgifter är dock ett sätt att förbättra din Python-skicklighet, särskilt om du är nybörjare.

Du kan till exempel ändra datum och tid på din dator med os-modulen. Du kan även skriva anpassade bash-kommandon med Python om du vill.

E-post
Hur du skapar dina egna kommandoradsprogram i Python med klick

Vill du skapa dina egna Python-kommandoradsprogram men tycker att det är för svårt? Använd Click, ett användbart Python-verktyg för att effektivisera din kod.

Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren
Idowu Omisola (56 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han är uttråkad, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.