Maison  >  Article  >  développement back-end  >  exception python et mécanisme de gestion des fichiers

exception python et mécanisme de gestion des fichiers

高洛峰
高洛峰original
2017-02-28 16:33:131372parcourir

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;

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

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

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"

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

<.>Interroger l'emplacement actuel.

>>> f.tell()

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)

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

Cela imprimera la longueur du fichier

<.>

>>> f.tell()

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)

Vérifiez si le fichier est fermé.

>>> f.closed

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

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

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

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()
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:
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

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

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

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中文网!

Déclaration:
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