exception python et mécanisme de gestion des fichiers

高洛峰
Libérer: 2017-02-28 16:33:13
original
1382 Les gens l'ont consulté

Les exemples de cet article décrivent les exceptions Python et les mécanismes de traitement de fichiers. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1 Gestion des exceptions

Les exceptions de Python utilisent
essayez
sauf
finalement
à gérer. Et except peut également être suivi de else.

Pour déclencher une exception, utilisez raise

Si l'exception levée n'est pas gérée, des informations rouges sont affichées. affiché dans l'IDE Python Lorsque le vrai programme Python est en cours d'exécution, le programme se terminera

Nous avons déjà vu plusieurs exceptions :

Si la clé utilisée dans le dictionnaire ne le fait pas. existe, KeyError sera déclenché une exception. Par exemple :

>>> d = {"a":1, "b":"abc"}
>>> d["c"]
Traceback (most recent call last): File "<interactive input>", line 1, in <module>
KeyError: &#39;c&#39;
Copier après la connexion

Une valeur qui n'existe pas dans la liste de recherche déclenchera une exception ValueError. :

>>> 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
Copier après la connexion

correspond. Si un indice est utilisé pour faire référence à un élément de la liste, si l'indice est hors limites, une exception IndexError sera générée. être généré. Par exemple :

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

Appelle une méthode qui n'existe pas. Une exception AttributeError sera levée

Références a. variable qui n'existe pas. Une exception NameError sera levée.

Mélange les types de données sans conversion forcée.

Une IOError provoquée par une erreur d'opération de fichier. 🎜>

try:
  fsock = open("/notthere")
except IOError:
  print "The file dose not exits..."
else:
  print "open the file."
print "this line will always print"
Copier après la connexion

Notez que dans le code ci-dessus :

open est une fonction intégrée. Elle est utilisée pour ouvrir un fichier et renvoie. un objet fichier.

try except peut être suivi d'une instruction else Lorsque l'exception spécifiée n'est pas interceptée, l'instruction else est exécutée

Importer un module Si le module n'existe pas, une ImportError. l'exception sera levée.

Vous pouvez également définir votre propre classe d'exception. Lors de la définition, laissez-la hériter de la classe Exception intégrée. Utilisez ensuite raise pour lancer une exception lorsque vous en avez besoin.

2 Travailler avec des objets fichier

Comme mentionné précédemment, open peut être utilisé pour ouvrir un fichier et renvoyer un objet fichier. Sa fonction est déclarée comme suit :

<🎜. >


open(name[, mode[, buffering]])
Copier après la connexion
a 3 paramètres (les deux derniers sont facultatifs). Ils représentent respectivement le nom du fichier. Paramètres du tampon. 🎜 >

Le deuxième paramètre est spécifié comme "rb". Cela signifie ouvrir le fichier en mode lecture binaire. Si ce paramètre est par défaut, cela signifie l'ouvrir en mode texte. .

>>> f = open("/music/_singles/kairo.mp3", "rb")
Copier après la connexion
S'il ne peut pas être ouvert, open déclenchera une exception IOError.

Vous pouvez maintenant les interroger en utilisant l'attribut name et l'attribut mode de l'objet fichier. Par exemple :

Après avoir ouvert le fichier, vous pouvez lire et écrire Par exemple :

>>> f.name
&#39;/music/_singles/kairo.mp3&#39;
>>> f.mode
&#39;rb&#39;
Copier après la connexion

<. 🎜>Interroger l'emplacement actuel.

>>> f.tell()
Copier après la connexion
Copier après la connexion

Localiser le pointeur du fichier Le premier paramètre est la valeur du décalage. Le deuxième paramètre peut prendre trois valeurs : 0. . 1. 2. Ils représentent respectivement le début et la position actuelle.

Si l'adresse localisée est incorrecte (par exemple, au-delà de la plage), une exception IOError sera levée.
0
>>> f.seek(0, 2)
Copier après la connexion

Cette instruction positionne donc le pointeur de fichier à la fin du fichier.

Cela imprimera la longueur du fichier

<. 🎜>

>>> f.tell()
Copier après la connexion
Copier après la connexion

lit les 128 derniers octets du fichier et renvoie les données lues sous forme de chaîne. Lors de la lecture des données, le pointeur du fichier est également déplacé vers l'arrière. >

Le paramètre de lecture indique le nombre maximum d'octets à lire. Ce paramètre peut également être omis. Cela signifie Lire jusqu'à la fin du fichier.

Si une erreur se produit lors de la lecture (comme par exemple). secteurs défectueux sur le disque ou le réseau est déconnecté), une exception IOError sera levée.
>>> f.seek(-128, 2)
>>> data = f.read(128)
Copier après la connexion

Vérifiez si le fichier est fermé.

>>> f.closed
Copier après la connexion

Le fichier doit être fermé lorsqu'il n'est plus utilisé. Vous pouvez rouvrir un fichier fermé. Fermer (aucune exception ne se produira).

False
>>> f.close()
Copier après la connexion

Après la fermeture, si vous effectuez seek() et d'autres opérations sur f, une exception ValueError sera levée.

La méthode d'écriture d'un fichier est similaire à celui de la lecture, il nécessite cependant que le fichier soit ouvert pour "écrire". Par exemple :

>>> f.closed
True
Copier après la connexion

où 'w' signifie écrire Ouvrir. . De cette façon, même si le fichier n'existe pas, il sera créé. S'il existe, le fichier existant sera écrasé

>>> f1 = open(&#39;test.log&#39;, &#39;w&#39;)
Copier après la connexion

Ouvrir. le fichier avec file() et Opening avec open() est le même. Alors imprimez :

'abc'

>>> f1.write(&#39;abc&#39;)
>>> f1.close()
>>> file(&#39;test.log&#39;).read()
Copier après la connexion
3 pour la boucle

dans. Python. for est utilisé dans Python Traverse a List Par exemple :

Cela me permettra de recevoir les valeurs des éléments dans li. à tour de rôle dans la boucle.

... print i

...

1
>>> li = [1, 2, 3]
>>> for i in li:
Copier après la connexion
2

3

Cette sortie est la même que print "n ".joni(li).

Si vous voulez faire comme les autres La même chose que dans la langue. Laissez pour être utilisé pour compter. Vous pouvez utiliser la méthode suivante :





Vous devez utiliser for pour parcourir le dictionnaire comme suit :

>>> for i in range(len(li)) : print li[i]
...
1
2
3
Copier après la connexion

Le résultat d'impression ci-dessus et imprimer " n".join(["%d = %s" % (k, v) for k, v in d. items()]) pareil.

4 Utilisez sys.modules

>>> d = {1:"abc", 2:"def"}
>>> for k, v in d.items() : print "%d = %s" % (k, v)
...
1 = abc
2 = def
Copier après la connexion

en Python. modules est un objet dictionnaire global défini dans le module sys.

Une fois que nous importons un module, nous pouvons le trouver dans sys.modules.

Chaque class a un "attribut de classe" intégré : __module__. Sa valeur est le module dans lequel la classe est définie.

5 Travailler avec Directory

Là. existe plusieurs fonctions pour exploiter les fichiers et les répertoires dans le module référencé par os.path Par exemple :

.

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

&#39;c:\music\mahadeva.mp3&#39;
>>> os.path.expanduser("~")
Copier après la connexion

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

>>> (filepath, filename) = os.path.split("c:\music\a.mp3")
Copier après la connexion

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

>>> filepath
&#39;c:\music&#39;
>>> filename
&#39;a.mp3&#39;
>>> (a, b) = os.path.splitext("a.mp3")
Copier après la connexion

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

>>> a
&#39;a&#39;
>>> b
&#39;.mp3&#39;
Copier après la connexion

列出目录用:

>>> os.listdir("c:\")
Copier après la connexion

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

[&#39;boot.ini&#39;, &#39;CONFIG.SYS&#39;, &#39;AUTOEXEC.BAT&#39;, &#39;java&#39;, 等]
Copier après la connexion

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

>>> [f for f in os.listdir("c:") if os.path.isdir(os.path.join("c:", f))]
Copier après la connexion

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

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

>>> import glob
Copier après la connexion

要先导入 glob 模块

>>> glob.glob(&#39;c:\music\*.mp3&#39;)
Copier après la connexion

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

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal