Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Methoden zum Lesen, Schreiben und Erstellen von Dateien

Python-Methoden zum Lesen, Schreiben und Erstellen von Dateien

高洛峰
高洛峰Original
2017-02-23 11:09:14993Durchsuche

Der Betrieb von Dateien und Ordnern (Dateibetriebsfunktionen) in Python erfordert das OS-Modul und das Shutil-Modul.

Ruft das aktuelle Arbeitsverzeichnis ab, also den Verzeichnispfad, in dem das aktuelle Python-Skript arbeitet: os.getcwd()

Gibt alle Datei- und Verzeichnisnamen im angegebenen Verzeichnis zurück : os.listdir()

Die Funktion wird zum Löschen einer Datei verwendet: os.remove()

Mehrere Verzeichnisse löschen: os.removedirs(r "c:python")

Überprüfen Sie, ob der angegebene Pfad eine Datei ist: os.path.isfile()

Überprüfen Sie, ob der angegebene Pfad ein Verzeichnis ist: os.path.isdir()

Überprüfen ob es sich um einen absoluten Pfad handelt: os.path.isabs()

Überprüfen Sie, ob der angegebene Pfad tatsächlich existiert: os.path.exists()

Gibt den Verzeichnisnamen und den Dateinamen von a zurück Pfad: os.path.split() zB os.path.split('/home/swaroop/byte/code/poem.txt') Ergebnis: ('/home/swaroop/byte/code', 'poem.txt' )

Split-Erweiterungsname: os.path.splitext()

Pfadnamen abrufen: os.path.dirname()

Dateinamen abrufen: os.path.basename ()

Shell-Befehle ausführen: os.system()

Umgebungsvariablen lesen und festlegen: os.getenv() und os.putenv()

gibt den Zeilenabschluss an Wird von der aktuellen Plattform verwendet: os.linesep Windows verwendet „rn“, Linux verwendet „n“ und Mac verwendet „r“

Geben Sie an, welche Plattform Sie verwenden: os.name Für Windows ist es „nt“ und für Linux/Unix-Benutzer ist es „posix“

Umbenennen: os.rename(old, new)

Mehrstufiges Verzeichnis erstellen: os.makedirs(r „c:pythontest“)

Ein einzelnes Verzeichnis erstellen: os.mkdir („test“)

Dateiattribute abrufen: os.stat (Datei)

Dateiberechtigungen und Zeitstempel ändern: os.chmod (Datei)

Aktuellen Prozess beenden: os.exit()

Dateigröße abrufen: os.path.getsize(filename)


Dateivorgang:
os.mknod(" test.txt") Erstellen Sie eine leere Datei
fp = open("test.txt",w) Öffnen Sie eine Datei direkt. Wenn die Datei nicht vorhanden ist, erstellen Sie die Datei

Über den Öffnungsmodus:

w öffnet sich zum Schreiben,
a öffnet sich im Anhängemodus (beginnt mit EOF, erstellt bei Bedarf eine neue Datei)
r+ öffnet sich im Lese-/Schreibmodus
w+ öffnet im Lese-/Schreibmodus (siehe w)
a+ Öffnet im Lese-/Schreibmodus (siehe a)
rb Öffnet im binären Lesemodus
wb Öffnet im binären Schreibmodus (siehe w)
ab Im binären Anhängemodus öffnen (siehe a)
rb+ Im binären Lese-/Schreibmodus öffnen (siehe r+)
wb+ Im binären Lese-/Schreibmodus öffnen (siehe w+)
ab+ Im binären Lese-/Schreibmodus öffnen Modus (siehe a+)

fp.read([size]) #size ist die Länge des Lesevorgangs in Bytes

fp.readline([size]) #Eine Zeile lesen Wenn Wenn die Größe definiert ist, ist es möglich, nur einen Teil der Zeile zurückzugeben.

fp.readlines([size]) # Behandeln Sie jede Zeile der Datei als Mitglied einer Liste und geben Sie diese Liste zurück. Tatsächlich wird es intern durch den Aufruf von readline() in einer Schleife implementiert. Wenn der Größenparameter angegeben wird, stellt die Größe die Gesamtlänge des gelesenen Inhalts dar, was bedeutet, dass nur ein Teil der Datei gelesen werden darf.

fp.write(str) #Write str in die Datei write() fügt nach str kein Newline-Zeichen hinzu.

fp.writelines(seq) #Write seq Alle Inhalte werden geschrieben in die Datei geschrieben (mehrere Zeilen werden gleichzeitig geschrieben). Diese Funktion schreibt auch einfach originalgetreu, ohne nach jeder Zeile etwas hinzuzufügen.

fp.close() #Schließen Sie die Datei. Python schließt eine Datei automatisch, wenn sie nicht mehr verwendet wird. Diese Funktion ist jedoch nicht garantiert. Es ist am besten, die Gewohnheit zu entwickeln, sie selbst zu schließen. Wenn eine Datei nach dem Schließen bearbeitet wird, wird ein ValueError generiert

fp.flush() #Den Inhalt des Puffers auf die Festplatte schreiben

fp.fileno() # Geben Sie eine lange Ganzzahl zurück. Geben Sie „Dateibezeichnung“ ein.

fp.isatty() #Ob es sich bei der Datei um eine Terminalgerätedatei handelt (in einem Unix-System)

fp.tell() #Gibt den aktuellen Wert zurück Position der Dateioperationsmarkierung, wobei der Anfang der Datei als Ursprung genommen wird

fp.next() #Zur nächsten Zeile zurückkehren und die Dateioperationsmarkierung in die nächste Zeile verschieben. Wenn eine Datei in einer Anweisung wie for...in file verwendet wird, wird die Funktion next() aufgerufen, um die Traversierung zu implementieren.

fp.seek(offset[,whence]) #Bewegen Sie die Dateioperationsmarkierung an die Offset-Position. Dieser Versatz wird im Allgemeinen relativ zum Dateianfang berechnet und ist im Allgemeinen eine positive Zahl. Dies trifft jedoch nicht unbedingt zu, wenn der Wherece-Parameter angegeben wird. Wherece kann 0 sein, um die Berechnung von Anfang an zu starten, und 1, um die aktuelle Position als Ursprung zu verwenden. 2 gibt an, dass das Ende der Datei als Ausgangspunkt für die Berechnung verwendet wird. Es ist zu beachten, dass beim Öffnen der Datei im a- oder a+-Modus die Dateioperationsmarkierung bei jedem Schreibvorgang automatisch zum Ende der Datei zurückkehrt.

fp.truncate([size]) #Schneiden Sie die Datei auf die angegebene Größe. Standardmäßig wird auf die Position der aktuellen Dateioperationsmarkierung geschnitten. Wenn die Größe größer als die Dateigröße ist, wird die Datei je nach System möglicherweise nicht geändert, die Datei wird möglicherweise mit 0 auf die entsprechende Größe aufgefüllt oder es werden zufällige Inhalte hinzugefügt.

Verzeichnisoperation:
os.mkdir("file") Verzeichnis erstellen
Datei kopieren:
shutil.copyfile("oldfile", "newfile") Sowohl oldfile als auch newfile können nur Dateien sein
shutil.copy("oldfile","newfile") oldfile kann nur ein Ordner sein, newfile kann eine Datei oder ein Zielverzeichnis sein
Kopieren Sie den Ordner:
shutil.copytree("olddir","newdir " ) Sowohl olddir als auch newdir können nur Verzeichnisse sein und newdir darf nicht existieren
Dateien (Verzeichnisse) umbenennen
os.rename("oldname", "newname") Verwenden Sie diesen Befehl für Dateien oder Verzeichnisse
Dateien verschieben (Verzeichnisse)
shutil.move("oldpos","newpos")
Dateien löschen
os.remove("file")
Verzeichnisse löschen
os.rmdir( "dir") kann nur leere Verzeichnisse löschen
shutil.rmtree("dir") Sowohl leere Verzeichnisse als auch Verzeichnisse mit Inhalt können gelöscht werden
Verzeichnis konvertieren
os.chdir("path") Pfad ändern

Python liest und schreibt Dateien

1.open
Nachdem Sie open zum Öffnen einer Datei verwendet haben, müssen Sie daran denken, die Methode close() des Dateiobjekts aufzurufen. Beispielsweise können Sie mit der try/finally-Anweisung sicherstellen, dass die Datei endgültig geschlossen werden kann.

file_object = open('thefile.txt')
versuchen Sie:
all_the_text = file_object.read( )
zum Schluss:
file_object.close( )

Hinweis: Die open-Anweisung kann nicht im try-Block platziert werden, da das Dateiobjekt file_object die Methode close() nicht ausführen kann, wenn beim Öffnen der Datei eine Ausnahme auftritt.

2. Datei lesen
Textdatei lesen
input = open('data', 'r')
#Der zweite Parameter ist standardmäßig r
input = open(' data ')

Binärdatei lesen
input = open('data', 'rb')

Alle Inhalte lesen
file_object = open('thefile. txt' )
versuchen Sie:
all_the_text = file_object.read( )
endlich:
file_object.close( )

Feste Bytes lesen
file_object = open ('abinfile ', 'rb')
try:
while True:
chunk = file_object.read(100)
if not chunk:
break
do_something_with(chunk)
finally :
file_object.close( )

Jede Zeile lesen
list_of_all_the_lines = file_object.readlines( )

Wenn es sich bei der Datei um eine Textdatei handelt, können Sie sie auch durchlaufen Direktes Dateiobjekt erhält jede Zeile:

für Zeile in Datei_Objekt:
Verarbeitungszeile

3 Datei schreiben
Textdatei schreiben
Ausgabe = öffnen(' data ', 'w')

Binärdatei schreiben
Ausgabe = open('data', 'wb')

Schreibdatei anhängen
Ausgabe = open('data', 'w+')

Daten schreiben
file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )

Mehrere Zeilen schreiben
file_object.writelines(list_of_text_strings)

Beachten Sie, dass der Aufruf von writelines zum Schreiben mehrerer Zeilen effizienter ist als die gleichzeitige Verwendung von Write zu hoch.

Bei der Verarbeitung von Protokolldateien stoßen wir häufig auf eine solche Situation: Die Protokolldatei ist riesig und es ist unmöglich, die gesamte Datei auf einmal zur Verarbeitung einzulesen Bei einem Computer mit einem physischen Speicher von 2 GB möchten wir möglicherweise nur 200 MB des Inhalts gleichzeitig verarbeiten.
In Python stellt das integrierte File-Objekt direkt eine readlines(sizehint)-Funktion bereit, um so etwas zu erreichen. Nehmen Sie den folgenden Code als Beispiel:

file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: position = file.tell()lines = file.readlines(sizehint)

Jedes Mal, wenn die readlines(sizehint)-Funktion aufgerufen wird, werden ungefähr 200 MB Daten zurückgegeben, und die zurückgegebenen Daten müssen Da die Zeilendaten vollständig sind, ist die Anzahl der zurückgegebenen Daten in den meisten Fällen etwas größer als der durch sizehint angegebene Wert (außer wenn die Funktion readlines(sizehint) zum letzten Mal aufgerufen wird). Normalerweise passt Python den vom Benutzer angegebenen Sizehint-Wert automatisch an ein ganzzahliges Vielfaches der internen Cache-Größe an.

Datei ist ein spezieller Typ in Python, der zum Betrieb externer Dateien in Python-Programmen verwendet wird. Alles in Python ist ein Objekt, und Datei ist keine Ausnahme. Datei hat Dateimethoden und -attribute. Schauen wir uns zunächst an, wie man ein Dateiobjekt erstellt:


file(name[, mode[, buffering]])
Die Funktion file() wird verwendet, um ein Dateiobjekt zu erstellen, das möglicherweise anschaulicher ist sind eingebaute Funktionen. Werfen wir einen Blick auf seine Parameter. Seine Parameter werden alle in Form von Zeichenfolgen übergeben. Name ist der Name der Datei.
Modus ist der offene Modus, die optionalen Werte sind r w a U, die Lese- (Standard) bzw. Schreibmodi darstellen, die verschiedene Zeilenumbrüche unterstützen. Wenn Sie eine Datei im W- oder A-Modus öffnen und die Datei nicht existiert, wird sie automatisch erstellt. Wenn Sie den W-Modus zum Öffnen einer vorhandenen Datei verwenden, wird außerdem der Inhalt der Originaldatei gelöscht, da sich die anfängliche Dateioperationsmarkierung am Anfang der Datei befindet. Wenn Sie zu diesem Zeitpunkt einen Schreibvorgang ausführen, wird der Originalinhalt gelöscht wird zweifellos gelöscht. Aus historischen Gründen gibt es für das Zeilenumbruchzeichen in verschiedenen Systemen unterschiedliche Modi. Unter Unix ist es beispielsweise ein „n“ und unter Windows ist es „rn“. Das Öffnen einer Datei im U-Modus unterstützt alle Zeilenumbruchmodi. r' 'n' 'rn' kann alle Zeilenumbrüche darstellen, und es wird ein Tupel zum Speichern der in dieser Datei verwendeten Zeilenumbruchzeichen verwendet. Obwohl es viele Arten des Zeilenumbruchs gibt, wird beim Lesen in Python stattdessen n verwendet. Nach dem Moduszeichen können Sie auch die beiden Zeichen + b t hinzufügen, die jeweils angeben, dass die Datei gleichzeitig gelesen und geschrieben werden kann und die Datei im Binärmodus oder Textmodus (Standard) geöffnet werden kann.
Wenn die Pufferung 0 ist, bedeutet dies keine Pufferung. Wenn sie 1 ist, bedeutet dies „Zeilenpufferung“. Wenn sie eine Zahl größer als 1 ist, bedeutet dies die Größe des Puffers, die in Bytes angegeben werden sollte.

Das Dateiobjekt verfügt über eigene Eigenschaften und Methoden. Schauen wir uns zunächst die Attribute der Datei an.


geschlossen #Markieren Sie, ob die Datei geschlossen wurde, neu geschrieben durch close()
Kodierung #Dateikodierung
Modus #Öffnungsmodus
Name #Dateiname
Zeilenumbrüche # In der Datei Der verwendete Newline-Modus ist ein Tupel
Softspace #boolean-Typ, normalerweise 0. Es soll zum Lesen und Schreiben verwendet werden print

Datei:

F.read( [size] ) #size ist die Länge des Lesevorgangs in Bytes
F.readline([size])
#Eine Zeile lesen Wenn die Größe definiert ist, ist es möglich, nur einen Teil der Zeile zurückzugeben
F.readlines ([size])
# Behandeln Sie jede Zeile der Datei als Mitglied einer Liste und geben Sie diese Liste zurück. Tatsächlich wird es intern durch den Aufruf von readline() in einer Schleife implementiert. Wenn der Größenparameter angegeben wird, stellt die Größe die Gesamtlänge des gelesenen Inhalts dar, was bedeutet, dass nur ein Teil der Datei gelesen werden darf.
F.write(str)
#Write str in die Datei write() fügt nach str kein Newline-Zeichen hinzu
F.writelines(seq)
#Write seq Alle Inhalte werden geschrieben zur Datei. Diese Funktion schreibt auch einfach originalgetreu, ohne nach jeder Zeile etwas hinzuzufügen.

Andere Dateimethoden:

F.close()
#Schließen Sie die Datei. Python schließt eine Datei automatisch, wenn sie nicht mehr verwendet wird. Diese Funktion ist jedoch nicht garantiert. Es ist am besten, die Gewohnheit zu entwickeln, sie selbst zu schließen. Wenn eine Datei nach dem Schließen bearbeitet wird, wird ein ValueError generiert
F.flush()
#Den Inhalt des Puffers auf die Festplatte schreiben
F.fileno()
# Gibt eine lange Ganzzahl vom Typ „Dateibezeichnung“ zurück
F.isatty()
#Ob es sich bei der Datei um eine Terminalgerätedatei handelt (in einem Unix-System)
F.tell()
#Gibt die zurück aktuelle Position der Dateioperationsmarkierung, wobei der Anfang der Datei als Ursprung verwendet wird
F.next()
# Zur nächsten Zeile zurückkehren und die Dateioperationsmarkierung in die nächste Zeile verschieben. Wenn eine Datei in einer Anweisung wie for ... in file verwendet wird, wird die Funktion next() aufgerufen, um die Traversierung zu implementieren.
F.seek(offset[,whence])
#Bewegen Sie die Dateioperationsmarkierung an die Offset-Position. Dieser Versatz wird im Allgemeinen relativ zum Dateianfang berechnet und ist im Allgemeinen eine positive Zahl. Dies trifft jedoch nicht unbedingt zu, wenn der Wherece-Parameter angegeben wird. Wherece kann 0 sein, um die Berechnung von Anfang an zu starten, und 1, um die aktuelle Position als Ursprung zu verwenden. 2 gibt an, dass das Ende der Datei als Ausgangspunkt für die Berechnung verwendet wird. Es ist zu beachten, dass beim Öffnen der Datei im a- oder a+-Modus die Dateioperationsmarkierung bei jedem Schreibvorgang automatisch zum Ende der Datei zurückkehrt.
F.truncate([size])
#Schneiden Sie die Datei auf die angegebene Größe. Standardmäßig wird auf die Position der aktuellen Dateioperationsmarkierung geschnitten. Wenn die Größe größer als die Dateigröße ist, wird die Datei je nach System möglicherweise nicht geändert, die Datei wird möglicherweise mit 0 auf die entsprechende Größe aufgefüllt oder es werden zufällige Inhalte hinzugefügt.

Die oben beschriebene Methode zum Lesen, Schreiben und Erstellen von Dateien in Python (muss gelesen werden) ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe auch, dass jeder PHP unterstützt Chinesische Website.

Weitere Artikel zu Python-Methoden zum Lesen, Schreiben und Erstellen von Dateien finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn