Praktische Funktionen in Standardbibliotheken seit Python 3.4 (?) (Offizielle Dokumentation) Es hat nicht nur viele Alternativen zur Betriebssystembibliothek, es ist auch ein großartiger Typ.
Es ist zu viel Arbeit und zu gut, also ist es viel Arbeit, es herauszufinden (zu viele Funktionen). Daher werde ich schnell nur beschreiben, wie man "Pfad" benutzt, den ich oft persönlich benutze. Ich würde gerne Ihre Kommentare hören, wenn es einen besseren Weg gibt.
#importieren
from pathlib import Path
#Objekterstellung
p = Path(r"C:\Users\admin\Desktop\temp\hoge.txt")
#Dateiname
print(path.name) # >> hoge.txt
#Dateiname ohne Erweiterung
print(path.stem) # >> hoge
#Holen Sie sich nur Erweiterung
print(path.suffix) # >> .py
#Am Anfang.Schneiden Sie aus, wenn Sie nicht brauchen
print(path.suffix.lstrip(".")) # >> py
#Bis zur übergeordneten Hierarchie
print(path.parent) # >> C:\Users\admin\Desktop\temp
#Höheres Level (\..\..Es ist in Ordnung, sie zu kombinieren, aber nicht wahr? )
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()Verwendung
path = Path("src", "python", "naritoblog") # src/python/naritoblog
#Beitritt durch Operator
path1 = Path("src")
path2 = Path("python")
path3 = path1 / path2 / "naritoblog" # src/python/naritoblog
#Konvertierung in einen String
print(type(path3.__str__())) # >> str
#Das ist in Ordnung
print(type(str(path3))) # >> str
#Vom relativen Pfad zum absoluten Pfad konvertieren
path1 = Path("hoge.txt")
print(path1) # >> hoge.txt
print(path1.resolve()) # >> C:\Users\admin\Desktop\temp\hoge.txt
path = Path("Taisho")
#Nimm alle
list(path.glob("*"))
#Nur Datei
list(path.glob("*.*"))
#Nur Verzeichnis
[list for list in path.iterdir() if list.is_dir()]
Wenn Sie das Objekt "Pfad" verwenden, müssen Sie keine komplizierte rekursive Verarbeitung durchführen!
#Alle folgenden
list(path.glob("**/*"))
#Die folgenden Dateien
list(path.glob("**/*.*"))
#Erweiterung kann angegeben werden
list(path.glob("**/*.txt"))
#Nur Verzeichnis
[list for list in path.glob("**/*") if list.is_dir()]
Natürlich nicht nur ".txt", sondern alles, was auf Text basiert.
txt_path = Path("xxx.txt")
#Dateierstellung (Export)
with txt_path.open("w", encoding="utf-8") as file:
file.write("Testausgabe")
#Datei lesen
with txt_path.open("r", encoding="utf-8") as file:
print(file.read())
e? Ist es lang Dann hier drüben
txt_path.write_text("Beschreibung", encoding="utf-8") #Schreiben
src = txt_path.read_text(encoding="utf-8") #Lesen
Erstellen Sie ein fiktives Pfadobjekt und erstellen Sie seine Existenz.
make_dir = Path("mkdir")
#Eltern: Erstellt für jedes Elternverzeichnis (mksirs-like)
# exist_ok: Kann erstellt werden, auch wenn ein Ordner mit demselben Namen vorhanden ist (der vorhandene Fehlerfall verschwindet)
make_dir.mkdir(parents=True, exist_ok=True)
# >>Ein Ordner namens "mkdir" wird im aktuellen Verzeichnis erstellt
Ich sage nicht entfernen, um Dateien zu löschen. Die Ära ist unverbunden. ~~ Wörter, die du sagen willst ~~
#Datei löschen
a_txt = Path('xxx.txt')
a_txt.unlink()
#Verzeichnis löschen (nur leer)
rm_dir = Path('mkdir')
rm_dir.rmdir()
Kurz gesagt, ändern Sie nur die Attribute "Name" und "Suffix" des Objekts "Pfad" Beachten Sie, dass die Informationen des "Path" -Objekts geändert werden, nicht die eigentliche Datei. Wenn Sie die tatsächliche Situation ändern möchten, verwenden Sie "os.rename" usw. (Ist dies mit pathlib möglich?)
Es gibt auch eine ähnliche Funktion, .rename ()
, aber es war seltsamerweise schwierig zu benutzen, deshalb habe ich sie weggelassen.
#Datei umbenennen (Namensattribut)
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
#Erweiterung ändern (Suffix-Attribut)
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
Fazit
Recommended Posts