Articles

Copiez un fichier en Python

Dans nos tutoriels précédents, nous avons appris certaines opérations de fichier Python comme la lecture, l’écriture et la suppression. Apprenons à copier un fichier en Python dans ce tutoriel.

Nous pouvons copier un fichier en Python en utilisant différentes méthodes sous les modules mentionnés ci-dessous,

  • shutilmodule
  • osmodule
  • subprocess module

Dans ce tutoriel, nous allons apprendre à utiliser les différentes méthodes fournies par les modules ci-dessus pour copier un fichier en Python.

1. module shutil pour copier un fichier en Python

Le module shutil fournit des méthodes faciles à utiliser à l’aide desquelles nous pouvons supprimer ainsi que copier un fichier en Python. Regardons les différentes méthodes définies dans ce module spécifiquement utilisées pour la copie.

1. copyfileobj()

La méthode copyfileobj() copie le contenu du fichier source dans le fichier cible en utilisant leurs objets de fichier respectifs. Jetons un coup d’œil au code ci-dessous,

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

Remarque: les objets fichier doivent pointer vers les positions 0 (position de départ) pour les fichiers source et cible respectifs, pour copier tout le contenu.

2. copyfile()

La méthode copyfile() copie le contenu de la source vers le fichier cible en utilisant les chemins de fichier. Il renvoie le chemin du fichier cible. Le chemin du fichier cible doit être accessible en écriture, sinon une exception OSError se produirait.

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

Il faut garder à l’esprit que la méthode ne permet que l’utilisation de chemins de fichiers et non de répertoires.

3. copy()

Cette méthode copie le fichier source dans le fichier cible ou le répertoire cible. Contrairement à copyfile(), la méthode copy() permet l’utilisation du répertoire cible comme argument et copie également les autorisations de fichier. copy() renvoie le chemin d’accès au fichier cible après avoir copié le contenu.

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

Un fichier nommé ‘fichier.txt’ est créé dans la destination cible avec tout le contenu et les autorisations copiés à partir de ‘/Users/test/file.txt’.

4. copy2()

La méthode copy2() est utilisée exactement de la même manière que la méthode copy(). Ils fonctionnent également de la même manière, à l’exception du fait que copy2() copie également les métadonnées du fichier source.

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

2. module os pour Copier un fichier en Python

1. popen()

La méthode popen() crée un canal vers la commande, cmd. La méthode renvoie un objet fichier connecté au canal cmd. Jetez un œil au code ci-dessous,

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

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

Avec cette méthode, non seulement nous pouvons copier des fichiers, mais également exécuter d’autres commandes régulières.

2. system()

La méthode system() appelle et exécute directement un argument de commande dans un sous-shell. Sa valeur de retour dépend du système d’exploitation qui exécute le programme. Pour Linux, c’est l’état de sortie, alors que pour Windows, c’est la valeur de retour par le shell système.

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

3. module de sous-traitement pour Copier un fichier en Python

1. call()

La méthode call() similaire à os.system() appelle ou exécute directement la commande passée en argument à la fonction.

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