Répertoire d'articles
1. Vue d'ensemble
- "Méthodes traditionnelles": lors de la lecture et de l'écriture de fichiers, désactivez toujours écrire l'instruction, ce n'est pas seulement facile à oublier, mais la formulation est également plus compliquée
- "avec open () comme méthode" : pour obtenir la même fonctionnalité, mais la déclaration est plus concise
2 Détaillé
2.1 Différence
2.1.1 Méthodes traditionnelles
path = r"C:\Users\wangyou\Desktop\1"
full_file_name = path + r'\1.txt'
file = open(full_file_name, 'r')
try:
file_content = file.read()
print(file_content)
finally:
file.close()
2.1.2 avec open () comme méthode
- C'est exactement la même chose que la "méthode traditionnelle" ci-dessus (lorsqu'elle est anormale, le fichier est automatiquement fermé)
path = r"C:\Users\wangyou\Desktop\1"
full_file_name = path + r'\1.txt'
with open(full_file_name, 'r') as file: # 自定义名称,如:file
print(file.read())
2.2 avec open () comme principe
- L'idée de base est que l'objet évalué par with doit avoir une méthode enter () et une méthode exit () .
- Enter () : Cette méthode est affectée à la valeur de retour comme après la variable
- Exit () : Quand avec après que tous les blocs de code ont été exécutés plus tard, alors exécution de la méthode (par exemple: file.close ())
Il est recommandé de déboguer le code suivant:
class Sample:
def __enter__(self):
print("In __enter__()")
return "Foo"
def __exit__(self, type, value, trace):
print("In __exit__()")
def get_sample():
return Sample()
if __name__ == '__main__':
with get_sample() as sample:
print("sample:", sample)
Résultats de test:
In __enter__()
sample: Foo
In __exit__()
3 exemple
def write_file(path):
with open(path, 'w', encoding='utf-8') as file: # 'a': 追加
file.write("Hello, Python!")
def read_file(path):
with open(path, 'r', encoding='utf-8') as file:
print(file.read())
if __name__ == '__main__':
path = r"C:\Users\wangyou\Desktop\1"
full_file_name = path + r'\1.txt'
write_file(full_file_name)
read_file(full_file_name)