Articles

Kopieer een bestand in Python

In onze vorige tutorials hebben we enkele Python-bestandsbewerkingen geleerd zoals lezen, schrijven en verwijderen. Laten we leren om een bestand in Python te kopiëren in deze tutorial.

We kunnen een bestand in Python kopiëren met behulp van verschillende methoden onder de onderstaande modules,

  • shutil module
  • os module
  • subprocess module

In in deze tutorial gaan we leren met behulp van de verschillende methoden van de bovenstaande modules om een bestand in Python te kopiëren.

1. shutil Module om een bestand in Python te kopiëren

de shutil module biedt enkele eenvoudig te gebruiken methoden waarmee we een bestand in Python kunnen verwijderen en kopiëren. Laten we eens kijken naar de verschillende methoden gedefinieerd onder deze module specifiek gebruikt voor het kopiëren.

1. copyfileobj ()

de copyfileobj() methode kopieert de inhoud van het bronbestand naar het doelbestand met behulp van hun respectievelijke bestandsobjecten. Laten we eens kijken naar de code hieronder,

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

opmerking: dat de bestandsobjecten moeten wijzen naar de 0 posities (startpositie) voor zowel de respectievelijke bron-als doelbestanden, om de volledige inhoud te kopiëren.

2. copyfile ()

de copyfile() methode kopieert de inhoud van de bron naar het doelbestand met behulp van de bestandspaden. Het retourneert het doelbestand pad. Het doelbestandspad moet beschrijfbaar zijn, anders treedt er een OSerror-uitzondering op.

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

Er moet rekening mee worden gehouden dat de methode alleen het gebruik van bestandspaden en niet mappen toestaat.

3. copy ()

deze methode kopieert het bronbestand naar het doelbestand of de doelmap. In tegenstelling tot copyfile() staat de methode copy() het gebruik van de doelmap als argument toe en kopieert ook de bestandsrechten. copy() geeft het pad terug naar het doelbestand na het kopiëren van de inhoud.

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

een bestand met de naam ‘file.txt ‘ wordt gemaakt in de doelbestemming met alle inhoud en machtigingen gekopieerd van ‘/Users/test/file.txt”.

4. copy2 ()

de copy2() methode wordt op precies dezelfde manier gebruikt als de copy() methode. Ze werken ook op dezelfde manier, behalve dat copy2() ook de meta-data kopieert uit het bronbestand.

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

2. os-Module om een bestand te kopiëren in Python

1. popen ()

de popen() methode maakt een pipe aan naar het commando cmd. De methode retourneert een bestand object verbonden met de CMD pipe. Neem een kijkje op de onderstaande code,

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

Met deze methode kunnen we niet alleen bestanden kopiëren, maar ook andere reguliere commando ‘ s uitvoeren.

2. system()

de system() methode roept direct een opdrachtargument aan en voert dit uit in een subschell. De return waarde hangt af van het besturingssysteem dat het programma draait. Voor Linux is het de exit status, terwijl Voor Windows het de return waarde is van de systeem shell.

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

3. subprocess Module om een bestand te kopiëren in Python

1. call ()

decall() methode vergelijkbaar metos.system() roept direct of voert het commando uit dat als argument aan de functie wordt doorgegeven.

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