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.
#importer
from pathlib import Path
#Création d'objets
p = Path(r"C:\Users\admin\Desktop\temp\hoge.txt")
#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
# 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
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()]
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()]
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é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
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()
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
pathlib
Recommended Posts