[Python] Datei- / Verzeichnisoperation

Da es jedes Mal schwierig ist, dies zu überprüfen, werde ich zusammenfassen, wie Dateien / Verzeichnisse mit Python betrieben werden.

Überprüfen Sie, ob der Pfad vorhanden ist

In [1]: import os

Vorhandene Datei

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

Nicht vorhandene Datei

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

Vorhandenes Verzeichnis

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

Nicht vorhandenes Verzeichnis

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

Überprüfen Sie, ob es sich um eine Datei handelt

Datei

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

Verzeichnis

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

Nicht vorhandene Datei

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

Überprüfen Sie, ob es sich um ein Verzeichnis handelt

Verzeichnis

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

Datei

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

Nicht vorhandenes Verzeichnis

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

Verzeichnis erstellen

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

In [13]: ls
test1/  test2/

Dateikopie

Die Metadaten werden nicht für copyfile und copy kopiert, aber die Metadaten werden für copy2 kopiert. Wenn Sie copy2 verwenden, wird auch das Erstellungsdatum der Datei kopiert, aber copyfile und copy haben ein neues Erstellungsdatum für die Datei.

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

Kopieren Sie das gesamte Verzeichnis

Beim Erstellen eines neuen Ordners und beim Kopieren

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

Beim Kopieren in einen vorhandenen Ordner wird eine Fehlermeldung angezeigt

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

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

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

Wenn Sie in ein vorhandenes Verzeichnis kopieren möchten

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

Datei löschen

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

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

Verzeichnis löschen

So löschen Sie ein leeres Verzeichnis Ich erhalte eine Fehlermeldung, wenn sich Dateien im Verzeichnis befinden

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

In [15]: ls
test1/

Beim Löschen des Inhalts des gesamten Ordners Der Inhalt des Ordners ist möglicherweise leer.

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

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

Löschen Sie nur bestimmte Dateien

Eine Kombination aus Glob und Entfernen

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

Datei bewegen

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

Datei / Verzeichnis umbenennen

Datei umbenennen
In [56]: os.rename("./test1.txt", "./test2.txt")

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

Verzeichnis umbenennen

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

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

Erweiterung erhalten

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

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

Dateititel abrufen

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

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

Holen Sie sich den Dateinamen aus dem vollständigen Pfad

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

Das Arbeiten mit Windows Path unter Linux funktioniert nicht. Natürlich ist es unter Windows in Ordnung

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

Wenn Sie es unter Linux als Windows-Pfad behandeln möchten

In [67]: import ntpath

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

Es ist in Ordnung, wenn der Windows-Pfad kommt

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

Aufteilen in Verzeichnisname und Dateiname

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

Wenn Sie es unter Linux als Windows-Pfad behandeln möchten

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')

Kombinieren Sie Verzeichnisname und Dateiname

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

Recommended Posts

[Python] Datei- / Verzeichnisoperation
Dateioperationen in Python
Dateimanipulation mit Python
Zusammenfassung der Python-Dateivorgänge
Dateivorgang
Python-Memo ① Ordner- und Dateivorgänge
ORC, Parkettdateivorgänge in Python
Python-Dateiverarbeitung
[Python3] Grundlegendes zu Dateivorgängen
[Hinweis] Datei lesen ~ Python ~
Dateiverarbeitung in Python
Dateivorgang mit open - "../"
Führen Sie die Python-Datei automatisch aus
Pyc-Datei lesen (Python 3.5.2)
Zusammenfassung der Python-Verzeichnisoperationen
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
Lesen Sie die Python-CSV-Datei
Lesen einer externen Python-Datei
[Python] Privat erstellte und verwendete kleine Funktionen (Dateivorgänge usw.)
Ordnererstellung / Verschieben / Komprimieren / Löschen von Dateien mit Python
Zusammenfassung der Python3-Listenoperationen
Vier Regeln für Python
Zeichnen Sie eine netCDF-Datei mit Python
Verschiedene String-Operationen in Python integriert
Dateizugriff unter dem Verzeichnis
Informationen zu Linux-Datei- und Verzeichnisberechtigungen
Wrapping von Git-Operationen in Python
Erstellen Sie ein Verzeichnis mit Python
Grundlegende Befehle für Dateivorgänge
Holen Sie sich das Home-Verzeichnis mit Python
Laden Sie die CSV-Datei mit Python herunter
Informationen zu Python- und Betriebssystemoperationen
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Führen Sie das Python-Skript aus der Batchdatei aus
[Python] Überprüfen Sie das aktuelle Verzeichnis und verschieben Sie das Verzeichnis
Extrahieren Sie die xz-Datei mit Python
Manipulation des Datei- / Ordnerpfads in Python
Einfache Verschlüsselung von Dateiinhalten (Python)
Python
Tipps zur Eingabe / Ausgabe von Python-Dateien
[Python] Mit Python in eine CSV-Datei schreiben
Scala-ähnliche Erfassungsoperation in Python
Speichern Sie die Binärdatei in Python
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Implementierter Dateidownload mit Python + Bottle
Linebot-Erstellung und Dateifreigabe mit Python
Package Filer für einfache Dateivorgänge
Ausgabe in eine CSV-Datei mit Python
Erstellen Sie eine Binärdatei in Python
Python-Verzeichniserstellung Korrespondenz, wenn Verzeichnis vorhanden ist
Lesen und Schreiben von Python CSV-Dateien
Python-Betriebssystemdateien, Unterverzeichnisoperationen
[Linux] Datei- und Verzeichnisoperationsbefehle
Extrahieren Sie die Targz-Datei mit Python
Hinweise zur Eingabe / Ausgabe von Python-Dateien
Vergleich der Konvertierungsmodule für ausführbare Python-Dateien 2
Unter Windows erstellte Python-CGI-Datei
Reihenfolge des Python-Importverzeichnisses (auf Anaconda)
[Mit Python automatisiert! ] Teil 2: Dateivorgang