Pourquoi essayer d'imprimer directement dans un fichier au lieu de sys.stdout
produire l'erreur de syntaxe suivante:
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f1=open('./testfile', 'w+')
>>> print('This is a test', file=f1)
File "<stdin>", line 1
print('This is a test', file=f1)
^
SyntaxError: invalid syntax
De l'aide (__ builtins__), j'ai les informations suivantes:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
Alors, quelle serait la bonne syntaxe pour modifier les écritures d'impression de flux standard?
Je sais qu'il existe peut-être de meilleures façons d'écrire dans un fichier, mais je ne comprends vraiment pas pourquoi cela devrait être une erreur de syntaxe ...
Une belle explication serait appréciée!
from __future__ import print_function
? En Python <3, l'impression est une déclaration:
help(__builtins__)
afficher cela est un bug.
__builtins__.__dict__['print'](value, file=f1)
cela fonctionne, cependant).
print()
est la fonction intégrée de python 3.x, tandis queprint
est l'opérateur python <3.x. Le message montre2.7.2+
.