Dans un tutoriel précédent, j'ai expliqué comment nous pouvons lire, ouvrir, fermer et écrire dans des fichiers. Dans ce tutoriel, je vais aller plus loin et discuter des différentes opérations que nous pouvons effectuer sur les fichiers et les répertoires (dossiers)..
Vous savez, par exemple, nous utilisons beaucoup de fichiers, et travailler avec des fichiers ne se limite pas à ouvrir et fermer le fichier. Vous souvenez-vous combien de fois vous avez copié ce fichier spécifique? Oh, ou quand vous avez renommé le fichier que vous avez téléchargé depuis un site Web parce qu'il avait un nom dénué de sens? Ce sont quelques types d'opérations que je vais discuter dans ce tutoriel.
Prêt? Allons droit au but et commençons à faire des choses intéressantes avec nos fichiers et répertoires en utilisant Python!
fermer
(Shell Utilities) est le nom du module que nous allons utiliser dans ce tutoriel pour effectuer différentes opérations sur les fichiers et les répertoires.. fermer
est déjà fourni avec votre installation Python, vous n’avez donc pas besoin de l’installer manuellement. Pour utiliser ce module, il vous suffit de: importation
le module:
importation
Commençons par notre première opération, à savoir, copier des fichiers. Pour ce faire, nous utiliserons le copie()
fonction de la fermer
module. Je vais utiliser le fichier sample.pdf dans les exemples de ce tutoriel. Vous pouvez télécharger ce fichier ou utiliser le fichier de votre choix..
Le script simple suivant va vous montrer comment copier échantillon.pdf
depuis le bureau (où il se trouve à l'origine) vers un autre répertoire Temp
, qui se trouve également sur le bureau:
importer shutil shutil.copy ('sample.pdf', 'Temp')
Notez que je n'ai répertorié que le nom du fichier et le nom du répertoire, car je travaille avec mon terminal, le bureau étant le chemin que j'utilise. Vous pouvez à la place spécifier le chemin complet du fichier que vous voulez copier et du répertoire dans lequel vous voulez copier le fichier, ce qui dans mon cas est le suivant:
shutil.copy ('/ Users / Abder / Desktop / sample.pdf', '/ Users / Abder / Desktop / Temp')
Allez-y, ouvrez le Temp
répertoire, ou tout répertoire que vous avez spécifié, et vous devriez y trouver le fichier copié!
Et si le deuxième argument était un fichier au lieu d'un répertoire? En d'autres termes, supposons que vous ayez saisi ce qui suit (j'ai supprimé le chemin d'accès complet aux fichiers, en supposant qu'ils se trouvent tous les deux sur le bureau):
importer shutil shutil.copy ('sample.pdf', 'fichier.pdf')
Dans ce cas, vous aurez un nouveau fichier fichier.pdf
, qui est une copie du fichier original échantillon.pdf
. Ainsi, si vous ouvrez fichier.pdf
, vous remarquerez qu'il a le même contenu car il s'agit en fait d'une copie de échantillon.pdf
.
La source et la destination peuvent-elles être identiques? Essayons de voir.
shutil.copy ('sample.pdf', 'sample.pdf'
)
Il semble que cette opération nous amène une erreur car les noms de fichiers ne doivent pas être les mêmes:
Traceback (appel le plus récent en dernier): fichier "test.py", ligne 2, dansshutil.copy ('sample.pdf', 'sample.pdf') Fichier "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py ", ligne 119, dans le fichier copyfile (src, dst)" /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py ", ligne 69, dans copyfile raise Error ("'% s' et '% s' sont le même fichier"% (src, dst)) shutil.Error: 'sample.pdf' et 'sample.pdf' sont le même fichier
Dans cette section, nous allons voir comment copier un répertoire (dossier) complet plutôt qu'un seul fichier, comme nous l'avons vu dans la section précédente..
Disons que nous avons la structure de répertoire suivante que nous voulons copier. C'est-à-dire que nous avons un répertoire principal Original
, qui contient un répertoire Original-1
, qui contient le répertoire Original-2
, et qui contient le répertoire Original-3
, et en Original-3
nous avons notre dossier Échantillon.pdf
(phew… ).
Ce que nous voulons faire maintenant est de copier le répertoire Original
avec tout son contenu dans un nouveau répertoire et appeler ce nouveau répertoire Copie originale
.
Ceci peut être fait simplement en utilisant le copytree ()
fonction, comme suit (en supposant que tout se passe sur le bureau):
importer shutil shutil.copytree ('Original', 'Original-Copy')
Vous devriez maintenant trouver un nouveau répertoire Copie originale
avec tout le contenu et la structure de Original
.
Déplacer un fichier, c'est comme faire un couper coller opération sur le fichier. dans le Copier des fichiers section nous avons vu comment faire une copie d'un fichier, tout en conservant le fichier d'origine à son emplacement d'origine.
Dans cette section, nous verrons comment déplacer (couper) le fichier vers un nouvel emplacement, tout en le supprimant simultanément de son emplacement d'origine. Cette opération est simplement effectuée en utilisant le bouge toi()
fonction, comme suit:
importer shutil shutil.move ('Sample.pdf', 'Temp')
Remarquerez que Échantillon.pdf
a été déplacé dans le répertoire Temp
, et n'existe plus sur le bureau.
Et si on déménageait Échantillon.pdf
à un nouveau fichier New-Sample.pdf
, comme suit?
importer shutil shutil.move ('Sample.pdf', 'New-Sample.pdf')
Dans ce cas, vous aurez seulement New-Sample.pdf
avec le même contenu que Échantillon.pdf
, mais Échantillon.pdf
n'existe plus.
Le déplacement des répertoires s'effectue à l'aide de la même fonction que celle utilisée dans Déplacement de fichiers section, c'est bouge toi()
. Utilisons le même exemple que dans le Copier des répertoires section, mais maintenant avec le bouge toi()
une fonction.
importer shutil shutil.move ('Original', 'Original-Copy')
Dans ce cas, vous aurez un nouveau répertoire Copie originale
avec le même contenu que Original
, mais Original
n'existe plus.
Devine quoi? Vous pouvez également utiliser le bouge toi()
fonction à Renommer un fichier ou un répertoire. Je ne répéterai pas les exemples de cette section. Mais si vous avez remarqué en appliquant le bouge toi()
Sur les fichiers et les répertoires ci-dessus, nous avons mentionné que le fichier / répertoire d'origine n'existe plus, mais qu'un nouveau fichier / répertoire avec le même contenu existe. C'est comme renommer un fichier / répertoire, n'est-ce pas?
Il semble que le fermer
module ne contient pas de fonction pour supprimer des dossiers. Il contient cependant une fonction permettant de supprimer des répertoires: rmtree ()
. Faites attention car la suppression est permanente, et donc vous allez ne pas trouvez le répertoire supprimé dans votre corbeille.
L’exemple ci-dessous montre comment nous pouvons supprimer définitivement le Copie originale
annuaire:
importer shutil shutil.rmtree ('Original-Copy')
Si vous souhaitez supprimer définitivement un fichier, vous pouvez utiliser le retirer()
fonction de Python os
module, comme suit:
import os os.remove ('Sample.pdf')
Comme vous pouvez le constater, nous avons pu effectuer d’importantes opérations sur les fichiers et les répertoires (copier, déplacer, renommer et supprimer) très facilement au moyen des modules shutil et os. Vous pouvez consulter la documentation de ces modules pour plus d'informations sur ce que vous pouvez en faire..