Heim > Backend-Entwicklung > Python-Tutorial > Python-Ausnahme und Dateiverarbeitungsmechanismus

Python-Ausnahme und Dateiverarbeitungsmechanismus

高洛峰
Freigeben: 2017-02-28 16:33:13
Original
1424 Leute haben es durchsucht

Die Beispiele in diesem Artikel beschreiben Python-Ausnahmen und Dateiverarbeitungsmechanismen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1 Ausnahmebehandlung

Pythons Ausnahmen verwenden
try
exclusive
Schließlich
zu behandeln. Und außer kann auch von else gefolgt werden.

Um eine Ausnahme auszulösen, verwenden Sie raise

Wenn die ausgelöste Ausnahme nicht behandelt wird, werden einige rote Informationen angezeigt Wird in der Python-IDE angezeigt, führt dies dazu, dass das Programm beendet wird.

Wir haben bereits mehrere Ausnahmen gesehen:

Wenn der im Wörterbuch verwendete Schlüssel nicht angezeigt wird Existiert, wird eine KeyError-Ausnahme ausgelöst. Beispiel:

>>> d = {"a":1, "b":"abc"}
>>> d["c"]
Traceback (most recent call last): File "<interactive input>", line 1, in <module>
KeyError: &#39;c&#39;
Nach dem Login kopieren

Ein Wert, der nicht in der Suchliste vorhanden ist, löst beispielsweise eine ValueError-Ausnahme aus :

>>> li = [1,2]
>>> li.index(3)
Traceback (most recent call last): File "<interactive input>", line 1, in <module>
ValueError: list.index(x): x not in list
Nach dem Login kopieren

Wenn ein Index verwendet wird, um auf ein Element in der Liste zu verweisen, wird eine IndexError-Ausnahme ausgelöst generiert werden. Zum Beispiel:

>>> li[2]
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
IndexError: list index out of range
Nach dem Login kopieren
Ruft eine Methode auf, die nicht existiert.

Referenzen a Eine NameError-Ausnahme wird ausgelöst.

Löst eine TypeError-Ausnahme aus, die durch einen Dateioperationsfehler verursacht wird 🎜>

Beachten Sie, dass im obigen Code:

open eine integrierte Funktion ist, die zum Öffnen einer Datei verwendet wird und zurückkehrt Ein Dateiobjekt.
try:
  fsock = open("/notthere")
except IOError:
  print "The file dose not exits..."
else:
  print "open the file."
print "this line will always print"
Nach dem Login kopieren
try, das von einer else-Anweisung gefolgt werden kann, wird ausgeführt.

Import A-Modul Es wird eine Ausnahme ausgelöst.

Sie können beim Definieren auch die integrierte Ausnahmeklasse erben. Verwenden Sie dann „raise“, um eine Ausnahme auszulösen


2 Arbeiten mit Dateiobjekten

Wie bereits erwähnt, kann open verwendet werden, um eine Datei zu öffnen und ein Dateiobjekt zurückzugeben. Seine Funktion ist wie folgt deklariert:

hat 3 Parameter (die letzten beiden sind optional). Sie stellen jeweils den Dateinamen dar. Zum Beispiel:

open(name[, mode[, buffering]])
Nach dem Login kopieren

Der zweite Parameter wird als „rb“ angegeben. Dies bedeutet, dass die Datei im binären Lesemodus geöffnet wird. Wenn dieser Parameter standardmäßig eingestellt ist, bedeutet dies, dass sie im Textmodus geöffnet wird .

Wenn es nicht geöffnet werden kann, wird beim Öffnen eine IOError-Ausnahme ausgelöst

Sie können sie jetzt mithilfe des Namensattributs und des Modusattributs des Dateiobjekts abfragen, z. B.:
>>> f = open("/music/_singles/kairo.mp3", "rb")
Nach dem Login kopieren

Nach dem Öffnen der Datei können Sie zum Beispiel lesen und schreiben:

>>> f.name
&#39;/music/_singles/kairo.mp3&#39;
>>> f.mode
&#39;rb&#39;
Nach dem Login kopieren

Fragen Sie den aktuellen Speicherort ab.

>>> f.tell()
Nach dem Login kopieren
Nach dem Login kopieren

Der erste Parameter ist der Offsetwert. Der zweite Parameter kann drei Werte annehmen . 1. 2. Sie stellen den Anfang bzw. die aktuelle Position dar.

Wenn die gefundene Adresse falsch ist (z. B. den Bereich überschreitet), wird eine IOError-Ausnahme ausgelöst.

Diese Anweisung positioniert den Dateizeiger also am Ende der Datei.
0
>>> f.seek(0, 2)
Nach dem Login kopieren

Dadurch wird die Länge der Datei gedruckt

>>> f.tell()
Nach dem Login kopieren
Nach dem Login kopieren

liest die letzten 128 Bytes der Datei und gibt die gelesenen Daten als Zeichenfolge zurück 🎜>

Der Parameter „read“ gibt die maximale Anzahl der zu lesenden Bytes an. Dieser Parameter kann auch weggelassen werden. Er bedeutet „Lesen bis zum Ende der Datei“.

Wenn beim Lesen ein Fehler auftritt (z B. fehlerhafte Sektoren auf der Festplatte oder die Verbindung zum Netzwerk getrennt ist), wird eine IOError-Ausnahme ausgelöst.

>>> f.seek(-128, 2)
>>> data = f.read(128)
Nach dem Login kopieren

Überprüfen Sie, ob die Datei geschlossen ist.

>>> f.closed
Nach dem Login kopieren
Die Datei sollte geschlossen werden, wenn sie nicht mehr verwendet wird. Sie können eine geschlossene Datei erneut öffnen (es wird keine Ausnahme auftreten).

False
>>> f.close()
Nach dem Login kopieren
Wenn Sie nach dem Schließen search() und andere Vorgänge für f ausführen, wird eine ValueError-Ausnahme ausgelöst.

Die Methode zum Schreiben einer Datei ist Ähnlich wie beim Lesen. Allerdings muss die Datei zum „Schreiben“ geöffnet werden. Zum Beispiel:

>>> f.closed
True
Nach dem Login kopieren

wobei „w“ „schreiben“ bedeutet Öffnen. Auch wenn die Datei nicht vorhanden ist, wird sie erstellt.


>>> f1 = open(&#39;test.log&#39;, &#39;w&#39;)
Nach dem Login kopieren
Öffnen Sie die Datei mit file() und Öffnen mit open() ist dasselbe. Drucken Sie also:

'abc'

3 for-Schleife

>>> f1.write(&#39;abc&#39;)
>>> f1.close()
>>> file(&#39;test.log&#39;).read()
Nach dem Login kopieren

in Python. for wird in Python verwendet. Zum Beispiel:

Dadurch kann ich die Werte der Elemente in erhalten li wiederum in der Schleife.

... print i

...

1

2

3
>>> li = [1, 2, 3]
>>> for i in li:
Nach dem Login kopieren

Diese Ausgabe ist die gleiche wie print " n".joni(li).

Wenn Sie es wie andere machen möchten. Das Gleiche wie in der Sprache. Lassen Sie for zum Zählen verwenden. Sie können die folgende Methode verwenden:





Sie müssen for verwenden, um das Wörterbuch wie folgt zu durchlaufen:


>>> for i in range(len(li)) : print li[i]
...
1
2
3
Nach dem Login kopieren
Das obige Druckergebnis und Drucken "n".join(["%d = %s" % (k, v) for k, v in d. items()]) das Gleiche.

4 Verwenden Sie sys.modules

in Python.modules ist ein globales Wörterbuchobjekt, das im sys-Modul definiert ist.
>>> d = {1:"abc", 2:"def"}
>>> for k, v in d.items() : print "%d = %s" % (k, v)
...
1 = abc
2 = def
Nach dem Login kopieren

Sobald wir ein Modul importieren, können wir es in sys.modules finden.

Jede Klasse verfügt über ein integriertes „Klassenattribut“: __module__. Sein Wert ist das Modul, in dem die Klasse definiert ist.

5 Arbeiten mit Verzeichnis

Es gibt mehrere Funktionen zum Bearbeiten von Dateien und Verzeichnissen in dem Modul, auf das os.path verweist, zum Beispiel:

这个join函数用来将一个或多个字符串构造成一个路径名.

&#39;c:\music\mahadeva.mp3&#39;
>>> os.path.expanduser("~")
Nach dem Login kopieren

expanduser函数用'~'作参数时. 返回当前用户根目录.
'c:\Documents and Settings\mpilgrim\My Documents'

>>> (filepath, filename) = os.path.split("c:\music\a.mp3")
Nach dem Login kopieren

split函数用来将一个路径名分成目录名和文件名. 它返回的是一个tuple. 用返回的tuple对(filepath, filename)赋值.

>>> filepath
&#39;c:\music&#39;
>>> filename
&#39;a.mp3&#39;
>>> (a, b) = os.path.splitext("a.mp3")
Nach dem Login kopieren

类似的. 这个splitext用来将一个全文件名分成 文件名 和 扩展名 两部分.

>>> a
&#39;a&#39;
>>> b
&#39;.mp3&#39;
Nach dem Login kopieren

列出目录用:

>>> os.listdir("c:\")
Nach dem Login kopieren

这个函数将返回一个字符串list. 包括所有的文件和文件夹的名字.

[&#39;boot.ini&#39;, &#39;CONFIG.SYS&#39;, &#39;AUTOEXEC.BAT&#39;, &#39;java&#39;, 等]
Nach dem Login kopieren

要判断一个字符串路径到底是一个文件还是一个文件夹. 用os.path模块中的 isfile() 或 isdir(). 如:

>>> [f for f in os.listdir("c:") if os.path.isdir(os.path.join("c:", f))]
Nach dem Login kopieren

这样就打印出c中所有文件夹名构成的list.

如果要在目录操作中使用通配符. 可以如下:

>>> import glob
Nach dem Login kopieren

要先导入 glob 模块

>>> glob.glob(&#39;c:\music\*.mp3&#39;)
Nach dem Login kopieren

则返回的list中包含了该目录下所有的 .mp3 后缀的文件名.

更多python异常和文件处理机制相关文章请关注PHP中文网!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage