[Python] Opération de fichier / répertoire

Comme il est difficile de vérifier à chaque fois, je vais résumer comment faire fonctionner les fichiers / répertoires avec Python.

Vérifiez si le chemin existe

In [1]: import os

Fichier existant

In [2]: os.path.exists("./test1/test1.txt")
Out[2]: True

Fichier inexistant

In [3]: os.path.exists("./test1/test1.doc")
Out[3]: False

Annuaire existant

In [4]: os.path.exists("./test1")
Out[4]: True

Annuaire inexistant

In [5]: os.path.exists("./test2")
Out[5]: False

Vérifiez s'il s'agit d'un fichier

Fichier

In [6]: os.path.isfile("./test1/test1.txt")
Out[6]: True

annuaire

In [7]: os.path.isfile("./test1")
Out[7]: False

Fichier inexistant

In [8]: os.path.isfile("./test1/test1.doc")
Out[8]: False

Vérifiez s'il s'agit d'un répertoire

annuaire

In [9]: os.path.isdir("./test1")
Out[9]: True

Fichier

In [10]: os.path.isdir("./test1/test1.txt")
Out[10]: False

Annuaire inexistant

In [11]: os.path.isdir("./test2")
Out[11]: False

Créer un répertoire

In [12]: os.mkdir("./test2")

In [13]: ls
test1/  test2/

Copie de fichier

Les métadonnées ne sont pas copiées pour copyfile et copy, mais les métadonnées sont copiées pour copy2. Si vous utilisez copy2, la date de création du fichier sera également copiée, mais le fichier et la copie auront une nouvelle date de création de fichier.

In [16]: import shutil

In [17]: shutil.copyfile("./test1/test1.txt", "./test2.txt")

In [18]: ls
test1/  test2.txt
In [19]: shutil.copy("./test1/test1.txt", "./test3.txt")

In [20]: shutil.copy2("./test1/test1.txt", "./test4.txt")

In [21]: ls
test1/  test1.txt  test2.txt  test3.txt  test4.txt

Copiez tout le répertoire

Lors de la création d'un nouveau dossier et de la copie

In [22]: shutil.copytree("./test1", "./test2")

In [23]: ls
test1/  test1.txt  test2/  test2.txt  test3.txt  test4.txt

In [24]: ls test1
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

In [25]: ls test2
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

J'obtiens une erreur en essayant de copier dans un dossier existant

In [27]: os.mkdir("./test2")

In [28]: shutil.copytree("./test1", "./test2")

OSError: [Errno 17] File exists: './test2'

Si vous souhaitez copier dans un répertoire existant

In [29]: from distutils.dir_util import copy_tree

In [30]: copy_tree("./test1", "./test2")

In [31]: ls test1
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

In [32]: ls test2
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

Supprimer le fichier

In [33]: os.remove("./test1.txt")

In [34]: ls
test1/  test2/  test2.txt  test3.txt  test4.txt

Supprimer le répertoire

Pour supprimer un répertoire vide J'obtiens une erreur s'il y a des fichiers dans le répertoire

In [14]: os.rmdir("./test2")

In [15]: ls
test1/

Lors de la suppression du contenu de tout le dossier Le contenu du dossier est peut-être vide.

In [35]: shutil.rmtree("./test2")

In [36]: ls
test1/  test2.txt  test3.txt  test4.txt

Supprimer uniquement des fichiers spécifiques

Une combinaison de glob et remove

In [43]: ls test2
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

In [44]: [os.remove(f) for f in glob.glob("./test2/*.log")]
Out[44]: [None, None, None]

In [45]: ls test2
test1.txt   test2.txt   test3.txt   test4.txt
test10.txt  test20.txt  test30.txt

Déplacer le fichier

In [52]: ls test2
test1.log  test10.txt  test2.txt   test3.log  test30.txt
test1.txt  test2.log   test20.txt  test3.txt  test4.txt

In [53]: shutil.move("./test2/test1.txt", ".")

In [54]: ls
test1/  test1.txt  test2/

In [55]: ls test2
test1.log   test2.log  test20.txt  test3.txt   test4.txt
test10.txt  test2.txt  test3.log   test30.txt

Renommer le fichier / répertoire

Renommer le fichier
In [56]: os.rename("./test1.txt", "./test2.txt")

In [57]: ls 
test1/  test2/  test2.txt

Renommer le répertoire

In [58]: os.rename("./test2", "./test3")

In [59]: ls
test1/  test2.txt  test3/

Obtenir l'extension

In [60]: ftitle, fext = os.path.splitext('/path/to/test1.txt')

In [62]: fext
Out[62]: '.txt'

Obtenir le titre du fichier

In [60]: ftitle, fext = os.path.splitext('/path/to/test1.txt')

In [61]: ftitle
Out[61]: '/path/to/test1'

Obtenir le nom du fichier à partir du chemin complet

In [65]: os.path.basename('/path/to/test1.txt')
Out[65]: 'test1.txt'

Travailler avec le chemin Windows sous Linux ne fonctionne pas. Bien sûr, ça va sur Windows

In [66]: os.path.basename('\\path\\to\\test1.txt')
Out[66]: '\\path\\to\\test1.txt'

Si vous souhaitez le traiter comme un chemin Windows sous Linux

In [67]: import ntpath

In [68]: ntpath.basename('/path/to/test1.txt')
Out[68]: 'test1.txt'

Ce n'est pas grave si le chemin Windows vient

In [69]: ntpath.basename('\\path\\to\\test1.txt')
Out[69]: 'test1.txt'

Divisé en nom de répertoire et nom de fichier

In [70]: os.path.split('/path/to/test1.txt')
Out[70]: ('/path/to', 'test1.txt')

Si vous souhaitez le traiter comme un chemin Windows sous Linux

In [71]: import ntpath

In [72]: ntpath.split('\\path\\to\\test1.txt')
Out[72]: ('\\path\\to', 'test1.txt')

In [73]: ntpath.split('/path/to/test1.txt')
Out[73]: ('/path/to', 'test1.txt')

Combiner le nom du répertoire et le nom du fichier

In [74]: os.path.join('/path/to','test1.txt')
Out[74]: '/path/to/test1.txt'

Recommended Posts

[Python] Opération de fichier / répertoire
Opérations sur les fichiers en Python
Manipulation de fichiers avec Python
résumé lié à l'opération de fichier python
Opération de fichier
Mémo Python ① Opérations sur les dossiers et fichiers
ORC, opérations de fichier Parquet en Python
Traitement de fichiers Python
[Python3] Comprendre les bases des opérations sur les fichiers
[Note] Lecture de fichier ~ Python ~
Traitement de fichiers en Python
Opération de fichier avec open - "../"
Exécuter automatiquement le fichier python
Lecture du fichier pyc (Python 3.5.2)
Résumé des opérations d'annuaire Python
[Python] Résumé des opérations sur les fichiers S3 avec boto3
Lire le fichier csv Python
lecture de fichier externe python
[Python] Fonctions à petite échelle créées et utilisées en privé (opérations sur les fichiers, etc.)
Opérations de création de dossier / déplacement de fichier / compression / suppression avec python
Résumé des opérations de liste Python3
Quatre règles de python
Dessiner un fichier netCDF avec python
Diverses opérations de chaîne avec Python intégré
Accès aux fichiers sous le répertoire
À propos des autorisations de fichiers et de répertoires Linux
Encapsulation des opérations git en Python
Créer un répertoire avec python
Commandes de base pour les opérations sur les fichiers
Obtenir le répertoire personnel avec python
Télécharger le fichier csv avec python
À propos des opérations Python et OS
[Note] Importation de fichiers dans le répertoire parent en Python
Exécuter le script Python à partir du fichier de commandes
[Python] Vérifiez le répertoire actuel, déplacez le répertoire
Extraire le fichier xz avec python
Manipulation de chemin de fichier / dossier en Python
Chiffrement facile du contenu des fichiers (Python)
Python
Conseils sur l'entrée / la sortie de fichier Python
[Python] Ecrire dans un fichier csv avec Python
Opération de collecte de type Scala en Python
Enregistrez le fichier binaire en Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Téléchargement de fichiers implémenté avec Python + Bottle
Création de Linebot et partage de fichiers avec Python
Package Filer pour des opérations simples sur les fichiers
Sortie vers un fichier csv avec Python
Créer un fichier binaire en Python
création du répertoire python Correspondance si le répertoire existe
Lecture et écriture de fichiers CSV Python
Fichiers liés au système d'exploitation Python, opérations de sous-répertoire
[Linux] Commandes d'opération de fichier et de répertoire
Extraire le fichier targz en utilisant python
Notes pour l'entrée / sortie de fichier Python
comparaison du module de conversion de fichier exécutable python 2
Fichier CGI Python créé sous Windows
Ordre des répertoires d'importation Python (sur anaconda)
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers