Mémorandum de Python Pathlib

Qu'est-ce que pathlib

Fonctionnalités pratiques dans les bibliothèques standard depuis Python 3.4 (?) (Documentation officielle) Non seulement il a de nombreuses alternatives à la bibliothèque OS, mais c'est un gars formidable.

C'est trop de travail et c'est trop bon, donc c'est beaucoup de travail à découvrir (trop de fonctionnalités) Par conséquent, je décrirai rapidement uniquement comment utiliser Path, que j'utilise souvent personnellement. J'aimerais entendre vos commentaires s'il existe une meilleure façon.

Préparation de l'objet de chemin

#importer
from pathlib import Path

#Création d'objets
p = Path(r"C:\Users\admin\Desktop\temp\hoge.txt")

Comment obtenir diverses informations

#nom de fichier
print(path.name) # >> hoge.txt
#Nom de fichier sans extension
print(path.stem) # >> hoge
#Obtenir uniquement l'extension
print(path.suffix) # >> .py
#Au début.Découpez si vous n'avez pas besoin
print(path.suffix.lstrip(".")) # >> py

#Jusqu'à la hiérarchie parente
print(path.parent) # >> C:\Users\admin\Desktop\temp
#Niveau supérieur (\..\..C'est correct de les combiner, mais n'est-ce pas? )
print(path.parents[0]) # >> C:\Users\admin\Desktop\temp
print(path.parents[1]) # >> C:\Users\admin\Desktop
print(path.parents[2]) # >> C:\Users\admin

opération de base

# os.path.join()Usage
path = Path("src", "python", "naritoblog")  # src/python/naritoblog

#Rejoindre par opérateur
path1 = Path("src")
path2 = Path("python")
path3 = path1 / path2 / "naritoblog"  # src/python/naritoblog

#Conversion en chaîne
print(type(path3.__str__())) # >> str
#C'est bon
print(type(str(path3)))      # >> str

#Conversion du chemin relatif en chemin absolu
path1 = Path("hoge.txt")
print(path1)           # >> hoge.txt
print(path1.resolve()) # >> C:\Users\admin\Desktop\temp\hoge.txt

Obtenir la liste dans le dossier

path = Path("Taisho")
#Avoir tout
list(path.glob("*"))
#Fichier uniquement
list(path.glob("*.*"))
#Annuaire uniquement
[list for list in path.iterdir() if list.is_dir()]

Obtenez une liste de tout dans un dossier spécifique

Avec l'objet Path, vous n'avez même pas besoin de faire un traitement récursif compliqué!

#Tout ce qui suit
list(path.glob("**/*"))
#Les fichiers suivants
list(path.glob("**/*.*"))
#L'extension peut être spécifiée
list(path.glob("**/*.txt"))
#Annuaire uniquement
[list for list in path.glob("**/*") if list.is_dir()]

Entrée / sortie de fichier texte

Bien sûr, non seulement .txt mais tout ce qui est basé sur du texte.

txt_path = Path("xxx.txt")
#Création de fichiers (exportation)
with txt_path.open("w", encoding="utf-8") as file:
    file.write("Sortie de test")
#Lire le fichier
with txt_path.open("r", encoding="utf-8") as file:
    print(file.read())

e? Est-ce long? Puis par ici

txt_path.write_text("La description", encoding="utf-8")  #l'écriture
src = txt_path.read_text(encoding="utf-8")  #Lis

Créer le dossier

Créez un objet Path fictif et créez son existence.

make_dir = Path("mkdir")
#parents: créé pour chaque répertoire parent (comme mksirs)
# exist_ok: peut être créé même s'il y a un dossier avec le même nom (la suppression des erreurs existantes disparaît)
make_dir.mkdir(parents=True, exist_ok=True)
# >>Un dossier appelé "mkdir" est créé dans le répertoire courant

Supprimer des fichiers et des dossiers

Je ne dis pas supprimer pour supprimer des fichiers. L'époque est sans lien. ~~ Mots que vous voulez dire ~~

#Supprimer le fichier
a_txt = Path('xxx.txt')
a_txt.unlink()

#Supprimer le répertoire (seulement vide)
rm_dir = Path('mkdir')
rm_dir.rmdir()

Changer le nom / l'extension du fichier

En bref, ne modifiez que les attributs "nom" et "suffixe" de l'objet "Chemin" Notez que ce sont les informations de l'objet Path qui sont modifiées, pas le fichier réel. Si vous voulez changer la situation actuelle, utilisez ʻos.rename` etc. (Est-ce possible avec pathlib?)

Il y a aussi une fonction similaire, .rename (), mais c'était étrangement difficile à utiliser, donc je l'ai omise.

#Renommer le fichier (attribut de nom)
path_a = Path(r"C:\temp\a_text.txt")
path_b = path_a.with_name("b_text.txt")
print(path_a) # >> C:\temp\a_text.txt
print(path_b) # >> C:\temp\b_text.txt

#Modifier l'extension (attribut de suffixe)
path_a = Path(r"C:\temp\wich_test.txt")
path_b = path_a.with_suffix(".csv")
print(path_a) # >> C:\temp\wich_test.txt
print(path_b) # >> C:\temp\wich_test.csv

Conclusion

La documentation officielle est la plus abondante pour les informations relatives à pathlib

Recommended Posts

Mémorandum de Python Pathlib
Mémorandum Python
Mémorandum Python 2
Mémorandum Python
mémorandum python
mémorandum python
Mémorandum Python
mémorandum python
Mémorandum Python
Mémorandum de base Python
Mémorandum Python (algorithme)
Mémorandum Python [liens]
Variables de numérotation des mémorandums Python
mémorandum python (mise à jour séquentielle)
Mémorandum Python (signet personnel)
Mémorandum de base Python partie 2
Nouveau dans Python 3.4.0 (1) --pathlib
Mémorandum @ Python OR Séminaire
mémorandum python super basique
Mémorandum Cisco _ configuration d'entrée avec Python
Python
Mémorandum ABC [ABC163 C --managementr] (Python)
fonction de mémorandum python pour débutant
Mémorandum @ Python OR Séminaire: matplotlib
[Python] Mémorandum sur l'évitement des erreurs SQLAlchemy
Mémorandum sur la corrélation [Python]
Mémorandum @ Python OR Séminaire: Pulp
Un mémorandum sur le simulacre de Python
Mémorandum @ Python OU Séminaire: Pandas
[python] Mémorandum de génération aléatoire
Mémorandum @ Python OR Seminar: scikit-learn
mémorandum d'exécution parallèle / asynchrone python
Mémorandum ABC [ABC159 C - Volume maximum] (Python)
Mémorandum d'opération Excel Python pywin32 (win32com)
[Python] Un mémorandum de belle soupe4
Mémorandum d'objet python dict (document mystérieux)
Mémorandum ABC [ABC161 C --Replacing Integer] (Python)
Mémorandum d'installation de PIL (Python Imaging Library)
Mémorandum ABC [ABC158 C - Augmentation de la taxe] (Python)
Mémorandum du débutant Mouvement "isdigit" Python
Mémorandum Matplotlib
python kafka
mémorandum Linux
Les bases de Python ⑤
Python intégré