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

Python-Ausnahme und Dateiverarbeitungsmechanismus

高洛峰
高洛峰Original
2017-02-28 16:33:131332Durchsuche

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;

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

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
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"
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]])

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 Öffnen der Datei können Sie zum Beispiel lesen und schreiben:

>>> f.name
&#39;/music/_singles/kairo.mp3&#39;
>>> f.mode
&#39;rb&#39;

Fragen Sie den aktuellen Speicherort ab.

>>> f.tell()

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)

Dadurch wird die Länge der Datei gedruckt

>>> f.tell()

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)

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

>>> f.closed
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()
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

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


>>> f1 = open(&#39;test.log&#39;, &#39;w&#39;)
Ö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()

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:

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

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("~")

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

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

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

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

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

>>> a
&#39;a&#39;
>>> b
&#39;.mp3&#39;

列出目录用:

>>> os.listdir("c:\")

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

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

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

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

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

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

>>> import glob

要先导入 glob 模块

>>> glob.glob(&#39;c:\music\*.mp3&#39;)

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

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

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