Voulez-vous améliorer vos compétences Python? Ensuite, vous pouvez essayer d'effectuer certaines tâches sur votre ordinateur avec Python. Copier et coller des fichiers d'un répertoire à un autre avec Python est un moyen amusant de le faire.

En plus d'être amusant, il vous permet de lire et d'écrire rapidement des fichiers sans vous distraire de votre code. Si vous êtes nouveau dans Python, c'est une compétence que vous devrez peut-être encore acquérir d'une manière ou d'une autre. Alors, découvrons comment copier des fichiers avec Python à travers cet article.

Conditions requises pour la copie de fichiers avec Python

Il existe de nombreuses façons de copier et coller des fichiers avec Python. Ainsi, l'exigence pour le faire varie et dépend de la méthode que vous décidez d'utiliser.

Bien que vous n'ayez pas besoin de modules supplémentaires pour copier des fichiers avec Python, vous pouvez toujours utiliser des bibliothèques intégrées si vous le souhaitez.

Par exemple, si vous souhaitez utiliser le

instagram viewer
os méthode, vous devez l'importer dans votre code. Cependant, l'un des moyens les plus répandus de copier des fichiers avec Python consiste à utiliser le shutil bibliothèque.

Voyons comment nous pouvons utiliser ces différentes méthodes pour copier des fichiers avec Python.

Comment copier des fichiers à l'aide de la bibliothèque Shutil intégrée de Python

Le shutil module est une bibliothèque Python intégrée et puissante pour lire et écrire rapidement des fichiers en Python.

Pour l'utiliser, il vous suffit de fournir le chemin complet des fichiers source et de destination.

En substance, shutil prend ce format:

shutil.copy ([chemin du répertoire source], [chemin du répertoire de destination], follow_symlinks = True)

Par exemple, le code ci-dessous utilise shutil.copy () pour copier un fichier nommé copy.txt à partir d'un dossier appelé mon dossier dans un autre nommé destination. Il renomme ensuite le fichier de destination comme 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)

Notez que vous pouvez écrire votre code dans n'importe quel éditeur de code de votre choix. Vous pouvez ensuite l'exécuter en utilisant la ligne de commande.

Cependant, vous pouvez également utiliser l'environnement de développement intégré Python (IDLE) par défaut si vous n'êtes pas familiarisé avec l'exécution de Python via la ligne de commande.

En rapport: Commandes d'invite de commandes (CMD) que vous devez connaître

Le shutil.copy La méthode ne copie pas les métadonnées du fichier source. En substance, votre machine considère le fichier de destination comme un nouveau fichier et lui attribue de nouvelles métadonnées.

Cependant, pour copier les métadonnées avec le fichier d'origine, utilisez le shutil.copy2 méthode:

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

La méthode ci-dessus préserve les métadonnées d'origine de l'ancien fichier dans le fichier de destination. Par exemple, le fichier de destination conserve la date à laquelle vous avez créé le fichier source, sa taille et d'autres attributs.

Le follow_symlinks argument est une déclaration de lien symbolique qui laisse shutil suivre un chemin absolu. Par conséquent, vous devez l'inclure si les fichiers source et de destination se trouvent dans des répertoires différents.

Mais si les deux fichiers se trouvent dans votre répertoire de travail actuel, vous n'avez pas besoin d'inclure un follow_symlinks. Si vous le faites, Python lève une exception de syntaxe.

Donc, si vous collez le fichier source dans votre répertoire de travail actuel, votre code devrait ressembler à ceci:

import shutil
shutil.copy2 (sourceFile, destinationFile)

En plus d'utiliser les méthodes shutil ci-dessus, vous pouvez également utiliser shutil.copyfile ou shutil.copyfileobj.

Utilisant shutil.copyfileobj est un peu différent car il nécessite le intégré ouvert fonction. Ensuite, vous devez lire et écrire du binaire en incluant le "rb" et "wb" arguments.

Voyons comment le shutil.copyfileobj La méthode fonctionne en utilisant les mêmes répertoires que nous avons utilisés précédemment:

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)

Notez que shutil.copyfileobj () ne nécessite pas le follow_symlinks argument.

Pourtant, shutil.copyfile () fonctionne à peu près de la même manière .copie et .copy2 Est-ce que. Ils ne diffèrent que de manière insignifiante dans leurs fonctions internes.

Pour utiliser le shutil.copyfile () méthode:

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

Comment copier des fichiers avec le module os

Le os le module utilise deux méthodes intégrées pour copier des fichiers; os.system () et os.popen () méthodes.

Le os.system () La méthode vous permet d'imiter l'environnement de ligne de commande.

Cependant, un inconvénient des méthodes os est qu'elles ne copient que les fichiers dans votre répertoire de travail actuel.

Pour utiliser le os.system () méthode sous Windows:

importer le système d'exploitation
os.system ('copier source.txt destination.txt)

Vous pouvez également utiliser la fonction intégrée xcopy Commande du terminal Windows:

importer le système d'exploitation
os.system ('xcopy source.txt destination.txt)

Pour utiliser le os.system méthode sous Linux, remplacez copie avec cp:

importer le système d'exploitation
os.system ('cp source.txt destination.txt)

Comment copier des fichiers à l'aide de la méthode os.popen

Pour utiliser cette méthode, remplacez os.system () avec os.popen ().

Sous Windows, utilisez:

importer le système d'exploitation
os.popen ('copier source.txt destination.txt)

Comme nous l'avons fait avec os.system (), remplacer copie avec cp pour utiliser cette méthode sous Linux:

importer le système d'exploitation
os.popen ('cp source.txt destination.txt)

Comment copier des fichiers avec le module de sous-processus de Python

En plus des méthodes ci-dessus, vous pouvez également utiliser le sous-processus () bibliothèque pour copier des fichiers en Python:

importer un sous-processus en tant que sp
sp.call ("copier sourceFile destinationFile", shell = True)

Cependant, sous Linux, utilisez:

importer un sous-processus en tant que sp
sp.call ("cp sourceFile destinationFile", shell = True)

Le sous-processus la bibliothèque utilise également subprocess.check_out () méthode. Cela fonctionne de la même manière subprocess.call () Est-ce que:

importer un sous-processus en tant que sp
sp.check_out ("copier le fichier sourceFichier de destination", shell = True)

Sous Linux, remplacez copie avec cp:

importer un sous-processus en tant que sp
sp.check_out ("cp sourceFile destinationFIle", shell = True)

Cependant, comme les méthodes os, les méthodes de sous-processus ne fonctionnent qu'avec les fichiers de votre répertoire de travail actuel.

Noter: Vous pouvez également copier des fichiers dans un dossier s'il se trouve dans le même répertoire de travail que le fichier source. Tout ce que vous avez à faire est de remplacer le nom du fichier de destination par le nom du dossier de destination. Cependant, assurez-vous que le dossier de destination et le fichier source se trouvent dans votre répertoire de travail actuel.

Comment copier des fichiers en Python sans utiliser de bibliothèques

Vous pouvez également copier des fichiers en Python sans dépendre d'aucune bibliothèque. Comme la méthode shutil, vous n'avez besoin que des chemins complets des répertoires source et de destination.

Voici comment y parvenir:

sourcePath = "C: /Users/source_directories/my_folder/copy.txt"
destinationPath = "C: /Users/some_directories/destination_directories/newFile.txt"
avec open (sourcePath, "rb") comme lu:
avec open (destinationPath, "wb") comme myfile:
monfichier.write (read.read ())

À rendre le code réutilisable, vous pouvez le modifier en fonction:

def copyFile (source = None, destination = None):
sinon (source et destination) == Aucun:
avec open (source, "rb") comme lu:
avec open (destination, "wb") comme myfile:
monfichier.write (read.read ())
autre:
print ("Veuillez saisir les chemins source et de destination")
copyFile (sourcePath, destinationPath)

C'est tout. Vous venez de créer un copieur de fichiers réutilisable avec Python sans utiliser de bibliothèque.

Continuez à automatiser les tâches avec Python

En plus de vous aider à rester concentré sur votre code lors de la création de projets, la copie de fichiers avec Python vous permet de mieux comprendre la gestion de fichiers avec Python. Cependant, jouer avec les tâches Python est un moyen d'améliorer vos compétences Python, surtout si vous êtes un débutant.

Par exemple, vous pouvez changer la date et l'heure sur votre PC avec le module os. Vous pouvez même écrire des commandes bash personnalisées avec Python si vous le souhaitez.

E-mail
Comment créer vos propres programmes de ligne de commande en Python en un clic

Vous voulez créer vos propres programmes de ligne de commande Python mais vous trouvez cela trop difficile? Utilisez Click, un outil Python utile pour rationaliser votre code.

Rubriques connexes
  • Programmation
  • Python
A propos de l'auteur
Idowu Omisola (56 articles publiés)

Idowu est passionné par tout ce qui concerne les technologies intelligentes et la productivité. Pendant son temps libre, il joue avec le codage et passe à l'échiquier quand il s'ennuie, mais il aime aussi rompre avec la routine de temps en temps. Sa passion pour montrer aux gens le chemin de la technologie moderne le motive à écrire davantage.

Plus de Idowu Omisola

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives!

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.