2017-03-16 2 views
1

Comment Python gère-t-il les circonstances lorsque les modes "a" et "w" apparaissent en même temps, à savoirpython fonction intégrée ouverte: différence entre les modes "aw" et "a" ou "aw" et "w"

f = open(filename, "wa") 

ou

f = open(filename, "aw") 

Je remarqué qu'il y avait une question similaire ici, python open built-in function: difference between modes a, a+, w, w+, and r+?, mais il n'explique pas ma question. J'ai aussi essayé de lire le code source en C ici https://hg.python.org/cpython/file/2.7/Objects/fileobject.c, mais ma question n'a pas été expliquée non plus.

J'ai essayé les codes ci-dessus, et il semble que Python prendrait seulement le premier paramètre quand "a" et "w" sont donnés. Cela n'a aucun sens, pourquoi Python ne déclenche pas une erreur à la place?

Répondre

1

Ceci a été corrigé en python 3.

with open("somefile.txt", "wa") as f: 
    ... 

Traceback:

Traceback (most recent call last): 
    File "test.py", line 1, in <module> 
    with open("somefile.txt", "wa") as f: 
ValueError: must have exactly one of create/read/write/append mode 
+0

Oui, merci pour la réponse. J'ai oublié de mentionner que j'utilisais Python 2.7. Juste une question de plus, en Python 2.7, est ma spéculation de seulement le premier paramètre prenant quand "a" et "w" sont donnés corrects? –