Vil du forbedre Python-ferdighetene dine? Deretter kan du prøve å utføre noen oppgaver på datamaskinen din med Python. Å kopiere og lime inn filer fra en katalog til en annen med Python er en morsom måte å gjøre dette på.
I tillegg til å være morsom, lar den deg lese og skrive filer raskt uten å bli distrahert fra koden din. Hvis du er ny i Python, er det en ferdighet du fremdeles kan trenge å hente på en eller annen måte. Så la oss finne ut hvordan du kopierer filer med Python gjennom dette innlegget.
Krav til kopiering av filer med Python
Det er mange måter å kopiere og lime inn filer med Python. Så, kravet for å gjøre det varierer og avhenger av metoden du bestemmer deg for å bruke.
Selv om du kanskje ikke trenger ekstra moduler for å kopiere filer med Python, kan du fortsatt bruke innebygde biblioteker hvis du vil.
For eksempel hvis du vil bruke os metode, må du importere den til koden din. Imidlertid er en av de populære måtene å kopiere filer med Python på shutil bibliotek.
La oss se hvordan vi kan bruke disse forskjellige metodene til å kopiere filer med Python.
Hvordan kopiere filer ved hjelp av Pythons innebygde Shutil-bibliotek
De shutil modulen er et innebygd og kraftig Python-bibliotek for å lese og skrive filer raskt i Python.
For å bruke den, trenger du bare å oppgi hele banen til kilde- og destinasjonsfilene.
I hovedsak, shutil tar dette formatet:
shutil.copy ([kilde katalogbane], [destinasjon katalogbane], follow_symlinks = True)
For eksempel bruker koden nedenfor shutil.copy () for å kopiere en fil med navnet copy.txt fra en mappe som heter min_mappe inn i en annen som heter mål. Den endrer deretter destinasjonsfilen til newFile.txt:
importere shutil
sourceFile = "C: /Users/some_directories/my_folder/copy.txt"
destinasjonsfil = "C: /Users/some_directories/destination/newFile.txt"
shutil.copy (sourceFile, destinationFile, follow_symlinks = True)
Merk at du kan skrive koden din hvilken som helst kodeditor du ønsker. Du kan deretter kjøre den ved hjelp av kommandolinjen.
Du kan imidlertid også bruke standard Python Integrated Development Environment (IDLE) hvis du ikke er kjent med å kjøre Python via kommandolinjen.
I slekt: Kommandoprompt (CMD) kommandoer du må vite
De shutil.copy metoden kopierer ikke metadataene til kildefilen. I hovedsak ser maskinen din destinasjonsfilen som en helt ny og gir den nye metadata.
For å kopiere metadataene sammen med originalfilen, bruk imidlertid shutil.copy2 metode:
importere shutil
shutil.copy2 (sourceFile, destinationFile, follow_symlinks = True)
Metoden ovenfor bevarer de originale metadataene til den gamle filen i destinasjonsfilen. For eksempel beholder målfilen datoen du opprettet kildefilen, dens størrelse og andre attributter.
De follow_symlinks argument er en symbolsk lenkeerklæring som lar shutil følg en absolutt vei. Derfor må du inkludere det hvis kilde- og destinasjonsfilene er i forskjellige kataloger.
Men hvis begge filene er i din nåværende arbeidskatalog, trenger du ikke å inkludere en follow_symlinks. Hvis du gjør det, gir Python et syntaks unntak.
Så hvis du limer inn kildefilen i din nåværende arbeidskatalog, bør koden din se slik ut:
importere shutil
shutil.copy2 (sourceFile, destinationFile)
I tillegg til å bruke shutil-metodene ovenfor, kan du også bruke shutil.copyfile eller shutil.copyfileobj.
Ved hjelp av shutil.copyfileobj er litt annerledes da det krever innebygd åpen funksjon. Deretter må du lese og skrive binært ved å inkludere "rb" og "wb" argumenter.
La oss se hvordan shutil.copyfileobj metoden fungerer med de samme katalogene som vi brukte tidligere:
importere shutil
sourceFilePath = open ("C: /Users/some_directories/my_folder/copy.txt", "rb")
destinationFilePath = åpen ("C: /Users/some_directories/destination/newFile.txt", "wb")
shutil.copyfileobj (sourceFilePath, destinationFilePath)
Noter det shutil.copyfileobj () krever ikke follow_symlinks argument.
Men, shutil.copyfile () fungerer ganske på samme måte .kopiere og .kopi2 gjør. De skiller seg bare ubetydelig ut i sine interne funksjoner.
For å bruke shutil.copyfile () metode:
importere shutil
sourceFilePath = "C: /Users/some_directories/my_folder/copy.txt"
destinationFilePath = "C: /Users/some_directories/destination/newFile.txt"
shutil.copyfile (sourceFilePath, destinationFilePath)
Hvordan kopiere filer med os-modulen
De os modulen bruker to innebygde metoder for å kopiere filer; os.system () og os.popen () metoder.
De os.system () metoden lar deg etterligne kommandolinjemiljøet.
Imidlertid er en mangel på OS-metoder at de bare kopierer filer i din nåværende arbeidskatalog.
For å bruke os.system () metode på Windows:
importer os
os.system ('copy source.txt destination.txt)
Du kan også bruke den innebygde kopi Windows-terminalkommando:
importer os
os.system ('xcopy source.txt destination.txt)
For å bruke os.system metode på Linux, erstatt kopiere med cp:
importer os
os.system ('cp source.txt destination.txt)
Hvordan kopiere filer ved hjelp av os.popen-metoden
For å bruke denne metoden, bytt ut os.system () med os.popen ().
På Windows bruker du:
importer os
os.popen ('kopier kilde.txt destinasjon.txt)
Som vi gjorde med os.system (), erstatte kopiere med cp for å bruke denne metoden på Linux:
importer os
os.popen ('cp source.txt destination.txt)
Hvordan kopiere filer med Pythons underprosessmodul
I tillegg til metodene ovenfor kan du også bruke underprosess () bibliotek for å kopiere filer i Python:
importere underprosess som sp
sp.call ("copy sourceFile destinationFile", shell = True)
Imidlertid, på Linux, bruk:
importere underprosess som sp
sp.call ("cp sourceFile destinationFile", shell = True)
De underprosess biblioteket bruker også subprocess.check_out () metode. Det fungerer på samme måte underprosess.call () gjør:
importere underprosess som sp
sp.check_out ("copy sourceFile destinationFile", shell = True)
På Linux, erstatt kopiere med cp:
importere underprosess som sp
sp.check_out ("cp sourceFile destinationFIle", shell = True)
I likhet med OS-metodene fungerer underbehandlingsmetoder bare med filer i din nåværende arbeidskatalog.
Merk: Du kan også kopiere filer til en mappe hvis den er i samme arbeidskatalog som kildefilen. Alt du trenger å gjøre er å erstatte destinasjonsfilnavnet med navnet på målmappen. Sørg imidlertid for at målmappen og kildefilen er i din nåværende arbeidskatalog.
Hvordan kopiere filer i Python uten å bruke biblioteker
Du kan også kopiere filer i Python uten å avhenge av noe bibliotek. I likhet med shutil-metoden trenger du bare hele stiene til kilde- og destinasjonskatalogene.
Slik oppnår du dette:
sourcePath = "C: /Users/source_directories/my_folder/copy.txt"
destinationPath = "C: /Users/some_directories/destination_directories/newFile.txt"
med åpen (sourcePath, "rb") som lest:
med åpen (destinationPath, "wb") som minfil:
myfile.write (read.read ())
Til gjøre koden gjenbrukbar, kan du endre den til en funksjon:
def copyFile (kilde = Ingen, destinasjon = Ingen):
hvis ikke (kilde og destinasjon) == Ingen:
med åpen (kilde, "rb") som lest:
med åpen (destinasjon, "wb") som minfil:
myfile.write (read.read ())
ellers:
skriv ut ("Vennligst skriv inn kilde- og destinasjonsstier")
copyFile (sourcePath, destinationPath)
Det er det. Du har nettopp laget en gjenbrukbar filkopimaskin med Python uten å bruke noe bibliotek.
Fortsett å automatisere oppgaver med Python
I tillegg til å hjelpe deg med å holde fokus på koden din mens du bygger prosjekter, kan du ved å kopiere filer med Python bedre forstå filhåndtering med Python. Å leke med Python-oppgaver er imidlertid en måte å forbedre Python-ferdighetene dine, spesielt hvis du er nybegynner.
For eksempel kan du endre dato og klokkeslett på PC-en din med os-modulen. Du kan til og med skrive tilpassede bash-kommandoer med Python hvis du vil.
Vil du lage dine egne Python-kommandolinjeprogrammer, men synes det er for vanskelig? Bruk Click, et nyttig Python-verktøy for å effektivisere koden din.
- Programmering
- Python
Idowu brenner for alt smart teknologi og produktivitet. På fritiden leker han med koding og bytter til sjakkbrettet når han kjeder seg, men han elsker også å bryte seg fra rutinen en gang i blant. Hans lidenskap for å vise folk veien rundt moderne teknologi motiverer ham til å skrive mer.
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.