Lär dig Python? Så här kopierar du en fil

Lär dig Python? Så här kopierar du en fil

Vill du förbättra din Python -skicklighet? Sedan kan du prova att utföra några uppgifter på din dator med Python. Att 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 kan du 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 som du fortfarande kan behöva ta 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 du metod måste du importera den till din kod. Ett av de populära sätten att kopiera filer med Python är dock att använda shutil bibliotek.



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 modul ä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.

xbox one kommer inte att ansluta till wifi längre

I huvudsak, shutil har detta format:





shutil.copy([source directory path], [destination directory path], 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 . Den döper sedan om destinationsfilen till newFile.txt :

import 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 din kod i 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 är bekant med att köra Python via kommandoraden.

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

De shutil.copy metoden kopierar inte metadata för källfilen. I huvudsak ser din dator målfilen som en helt ny och ger den nya metadata.

Om du vill kopiera metadata tillsammans med originalfilen använder du dock shutil.copy2 metod:

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

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

De follow_symlinks argument är en symbolisk länkdeklaration som låter shutil följa en absolut väg. Därför måste du inkludera den om käll- och målfilerna finns i olika kataloger.

Men om båda filerna finns i din nuvarande arbetskatalog behöver du inte inkludera en follow_symlinks . Om du gör det tar Python ett syntaxundantag.

installera remix os till hårddisken

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

import 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 metod fungerar med samma kataloger som vi använde tidigare:

import shutil
sourceFilePath = open('C:/Users/some_directories/my_folder/copy.txt', 'rb')
destinationFilePath = open('C:/Users/some_directories/destination/newFile.txt', 'wb')
shutil.copyfileobj(sourceFilePath, destinationFilePath)

Anteckna det shutil.copyfileobj () kräver inte follow_symlinks argument.

Dock, shutil.copyfile () fungerar ungefär på samma sätt .kopiera och .kopia2 gör. De skiljer sig bara obetydligt i sina inre funktioner.

Att använda shutil.copyfile () metod:

import 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 du modulen använder två inbyggda metoder för att kopiera filer; os.system () och os.popen () metoder.

De os.system () metod kan du 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 i Windows:

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

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

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

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

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

Hur man kopierar filer med metoden os.popen

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

På Windows, använd:

import os
os.popen('copy source.txt destination.txt)

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

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

Hur man kopierar filer med Pythons delprocessmodul

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

import subprocess as sp
sp.call('copy sourceFile destinationFile', shell=True)

Men på Linux, använd:

import subprocess as sp
sp.call('cp sourceFile destinationFile', shell=True)

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

import subprocess as sp
sp.check_out('copy sourceFile destinationFile', shell=True)

På Linux, ersätt kopiera med cp :

import subprocess as sp
sp.check_out('cp sourceFile destinationFIle', shell=True)

Men som os -metoderna fungerar delprocessmetoder bara med filer i din nuvarande arbetskatalog.

Notera: Du kan också kopiera filer till en mapp om den finns i samma arbetskatalog som källfilen. Allt du behöver göra är att ersätta destinationsfilnamnet 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 shutil -metoden behöver du bara de fullständiga sökvägarna för käll- och målkatalogerna.

Windows 10 diskanvändning 100 fix

Så här uppnår du detta:

sourcePath = 'C:/Users/source_directories/my_folder/copy.txt'
destinationPath = 'C:/Users/some_directories/destination_directories/newFile.txt'
with open(sourcePath, 'rb') as read:
with open(destinationPath, 'wb') as myfile:
myfile.write(read.read())

För att göra koden återanvändbar kan du ändra den till en funktion:

def copyFile(source=None, destination=None):
if not (source and destination)==None:
with open(source, 'rb') as read:
with open(destination, 'wb') as myfile:
myfile.write(read.read())
else:
print('Please enter the source and destination paths')
copyFile(sourcePath, destinationPath)

Det är allt. Du har just gjort en återanvändbar kopiator 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, låter dig 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.

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

Dela med sig Dela med sig Tweet E-post Hur man skapar dina egna kommandoradsprogram i Python med klick

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

Läs Nästa
Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren Idisou Omisola(94 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 har tråkigt, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen kring 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!

Klicka här för att prenumerera