Heim Backend-Entwicklung Python-Tutorial Detaillierte Erläuterung der Python-Ausnahme und des Dateiverarbeitungsmechanismus

Detaillierte Erläuterung der Python-Ausnahme und des Dateiverarbeitungsmechanismus

Aug 04, 2016 am 08:55 AM
python 异常 文件处理

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

1 Ausnahmebehandlung

Ausnahmeverwendung in Python
versuche es
außer
endlich
zu handhaben. 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 in der Python-IDE angezeigt. Wenn das echte Python-Programm ausgeführt wird, wird das Programm beendet

Wir haben schon mehrere Auffälligkeiten gesehen:

Wenn der verwendete Schlüssel nicht im Wörterbuch vorhanden ist, 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: 'c'

Nach dem Login kopieren

Suchen Sie nach einem Wert, der nicht in der Liste vorhanden ist. Es wird eine ValueError-Ausnahme ausgelöst. Beispiel:

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

Entspricht

. Wenn Sie einen Index verwenden, um auf ein Element in der Liste zu verweisen, wird eine IndexError-Ausnahme generiert

>>> li[2]
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
IndexError: list index out of range

Nach dem Login kopieren

Beim Aufruf einer nicht vorhandenen Methode wird eine AttributeError-Ausnahme ausgelöst.

Referenziert eine Variable, die nicht existiert.

Das Mischen von Datentypen ohne Zwang löst eine TypeError-Ausnahme aus.

IO-Fehler, der durch einen Dateioperationsfehler verursacht wird, wie zum Beispiel:

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

Hinweis im Code oben:

open ist eine integrierte Funktion, die zum Öffnen einer Datei verwendet wird und ein Dateiobjekt zurückgibt.

Auf try außer kann eine else-Anweisung folgen. Wenn die angegebene Ausnahme nicht abgefangen wird, wird die else-Anweisung ausgeführt.

Beim Importieren eines Moduls wird eine ImportError-Ausnahme ausgelöst.

Sie können auch Ihre eigene Ausnahmeklasse definieren. Lassen Sie sie beim Definieren die integrierte Ausnahmeklasse erben. Verwenden Sie dann „raise“, um eine Ausnahme auszulösen, wenn Sie sie auslösen müssen.

2 Arbeiten mit Dateiobjekten

Wie bereits erwähnt, kann open verwendet werden, um eine Datei zu öffnen und ein Dateiobjekt zurückzugeben. Die Funktionsdeklaration lautet wie folgt:


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

hat 3 Parameter (die letzten beiden sind optional). Sie repräsentieren den Dateinamen, die Öffnungsmethode und den Pufferparameter

>>> f = open("/music/_singles/kairo.mp3", "rb")

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, löst das Öffnen eine IOError-Ausnahme aus.

Sie können jetzt Dateiobjekte anhand ihres Namensattributs und Modusattributs abfragen, zum Beispiel:

>>> f.name
'/music/_singles/kairo.mp3'
>>> f.mode
'rb'

Nach dem Login kopieren
Nachdem Sie die Datei geöffnet haben, können Sie beispielsweise lesen und schreiben:

>>> f.tell()

Nach dem Login kopieren
Nach dem Login kopieren
Aktuellen Standort abfragen.

0
>>> f.seek(0, 2)

Nach dem Login kopieren
Positionieren Sie den Dateizeiger. Der zweite Parameter kann drei Werte annehmen: 1. 2. Sie repräsentieren den Anfang, die aktuelle Position und das Ende

Wenn die gefundene Adresse falsch ist (z. B. außerhalb des Bereichs), wird eine IOError-Ausnahme ausgelöst.

Diese Anweisung positioniert also den Dateizeiger am Ende der Datei.

Dadurch wird die Länge der Datei gedruckt.
>>> f.tell()

Nach dem Login kopieren
Nach dem Login kopieren

Lesen Sie die letzten 128 Bytes der Datei und geben Sie die gelesenen Daten als Zeichenfolge zurück. Beim Lesen der Daten wird auch der Dateizeiger rückwärts bewegt.
>>> f.seek(-128, 2)
>>> data = f.read(128)

Nach dem Login kopieren

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

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

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

Nach dem Login kopieren

Dateien sollten geschlossen werden, wenn sie nicht mehr verwendet werden. Eine bereits geschlossene Datei kann wieder geschlossen werden (es tritt keine Ausnahme ein).
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.
>>> f.closed
True

Nach dem Login kopieren
Die Methode zum Schreiben einer Datei ähnelt dem Lesen. Allerdings muss die Datei zum „Schreiben“ geöffnet werden


Wobei „w“ zum Schreiben geöffnet bedeutet, wird die Datei auch dann erstellt, wenn sie existiert.
>>> f1 = open('test.log', 'w')

Nach dem Login kopieren

Das Öffnen einer Datei mit file() ist dasselbe wie das Öffnen mit open(). Drucken Sie also:
>>> f1.write('abc')
>>> f1.close()
>>> file('test.log').read()

Nach dem Login kopieren
'abc'

3 for-Schleife

In Python wird for zum Durchlaufen einer Liste verwendet. Zum Beispiel:

Dadurch kann ich die Werte der Elemente in li der Reihe nach in der Schleife empfangen.
>>> li = [1, 2, 3]
>>> for i in li:

Nach dem Login kopieren
... drucke i

...

1

2

3

Diese Ausgabe ist dieselbe wie print „n“.joni(li).
Wenn Sie for zum Zählen wie in anderen Sprachen verwenden möchten, können Sie die folgende Methode verwenden:


Verwenden Sie for zum Durchlaufen des Wörterbuchs wie folgt:
>>> for i in range(len(li)) : print li[i]
...
1
2
3

Nach dem Login kopieren

Das obige Druckergebnis ist das gleiche wie print "n".join(["%d = %s" % (k, v) for k, v in d.items()]).
>>> d = {1:"abc", 2:"def"}
>>> for k, v in d.items() : print "%d = %s" % (k, v)
...
1 = abc
2 = def

Nach dem Login kopieren

4 Verwenden Sie sys.modules

In Python ist module ein globales Wörterbuchobjekt, das im sys-Modul definiert ist. Sobald wir ein Modul importiert haben, finden Sie es in sys.modules.

Jede Klasse verfügt über ein integriertes „Klassenattribut“: __module__. Sein Wert ist der Name des Moduls, das die Klasse definiert.

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函数用来将一个或多个字符串构造成一个路径名.

'c:\music\mahadeva.mp3'
>>> 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
'c:\music'
>>> filename
'a.mp3'
>>> (a, b) = os.path.splitext("a.mp3")

Nach dem Login kopieren

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

>>> a
'a'
>>> b
'.mp3'

Nach dem Login kopieren

列出目录用:

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

Nach dem Login kopieren

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

['boot.ini', 'CONFIG.SYS', 'AUTOEXEC.BAT', 'java', 等]

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('c:\music\*.mp3')

Nach dem Login kopieren

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

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann der Python -Dolmetscher im Linux -System gelöscht werden? Kann der Python -Dolmetscher im Linux -System gelöscht werden? Apr 02, 2025 am 07:00 AM

In Bezug auf das Problem der Entfernung des Python -Dolmetschers, das mit Linux -Systemen ausgestattet ist, werden viele Linux -Verteilungen den Python -Dolmetscher bei der Installation vorinstallieren, und verwendet den Paketmanager nicht ...

Wie löst ich das Problem der Erkennung von kundenspezifischen Dekoratoren in Python? Wie löst ich das Problem der Erkennung von kundenspezifischen Dekoratoren in Python? Apr 02, 2025 am 06:42 AM

Lösung für die Erkennung von Pylanztypen bei der Verwendung des benutzerdefinierten Dekorators in der Python -Programmierung ist Decorator ein leistungsstarkes Werkzeug, mit dem Zeilen hinzugefügt werden können ...

Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Apr 02, 2025 am 06:36 AM

Verwenden Sie Python im Linux -Terminal ...

Python 3.6 Laden Sie Giftedatei Fehler ModulenotFoundError: Was soll ich tun, wenn ich die Gurkendatei '__builtin__' lade? Python 3.6 Laden Sie Giftedatei Fehler ModulenotFoundError: Was soll ich tun, wenn ich die Gurkendatei '__builtin__' lade? Apr 02, 2025 am 06:27 AM

Laden Sie die Gurkendatei in Python 3.6 Umgebungsfehler: ModulenotFoundError: Nomodulenamed ...

Teilen Fastapi und AIOHTTP dieselbe globale Ereignisschleife? Teilen Fastapi und AIOHTTP dieselbe globale Ereignisschleife? Apr 02, 2025 am 06:12 AM

Kompatibilitätsprobleme zwischen asynchronen Python -Bibliotheken in Python, asynchrones Programmieren ist zum Prozess der hohen Parallelität und der I/O geworden ...

Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird? Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird? Apr 02, 2025 am 07:12 AM

Laden Sie Gurkendateien in Python 3.6 Umgebungsbericht Fehler: ModulenotFoundError: Nomodulennamen ...

Wie kann ich sicherstellen, dass der Kinderprozess auch endet, nachdem er den übergeordneten Prozess über Signal in Python getötet hat? Wie kann ich sicherstellen, dass der Kinderprozess auch endet, nachdem er den übergeordneten Prozess über Signal in Python getötet hat? Apr 02, 2025 am 06:39 AM

Das Problem und die Lösung des Kinderprozesses werden weiterhin ausgeführt, wenn Signale zum Töten des übergeordneten Prozesses verwendet werden. In der Python -Programmierung, nachdem er den übergeordneten Prozess durch Signale getötet hatte, ist der Kinderprozess immer noch ...

See all articles