Juste au moment où je révisais le code que j'ai écrit il y a longtemps
python
try:
with log_path.open(encoding='utf-8') as log_file:
for line in log_file.readlines():
...
J'ai remarqué que j'écrivais du code comme celui-ci ici et là.
Le descripteur de fichier de Python (Remarque: version 2.4 ou ultérieure) est un itérateur, donc dans le code ci-dessus
python
for line in log_file.readlines():
La ligne est
python
for line in log_file:
Doit être écrit.
Même lorsqu'il est combiné avec ʻenumerate () `
python
for line_number, line in enumerate(log_file.readlines(), 1):
ne pas,
python
for line_number, line in enumerate(log_file, 1):
Il n'y a aucun problème d'écriture.
Si, pour une raison quelconque, vous voulez vraiment lire le fichier à la fois en utilisant la méthode readlines ()
, au lieu d'écrire readlines ()
dans l'instruction for
python
log_lines = []
try:
with log_path.open(encoding='utf-8') as log_file:
log_lines = log_file.readlines()
except IOError:
pass
for line in log_lines:
...
Je pense que ça devrait être écrit comme ça.
Je vois parfois beaucoup de code long dans le bloc with
, mais je devrais fermer le fichier ouvert si je n'en ai pas besoin, et comme le bloc with
n'a pas de portée, je peux ignorer les traitements inutiles sans écriture bâclée. C'est vrai.
Comme mentionné ci-dessus, j'étais assez confus quant à la qualité de mon code, c'est donc une astuce que j'ai écrite avec ma propre prudence.
Recommended Posts