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!
python
file
python-2.7
Alex
la source
la source
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+
.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).Réponses:
Si vous souhaitez utiliser la
print
fonction dans Python 2, vous devez importer depuis__future__
:Mais vous pouvez aussi avoir le même effet sans utiliser la fonction:
la source
print est un mot-clé en python 2.X. Vous devez utiliser ce qui suit:
la source
print(args, file=f1)
est la syntaxe python 3.x. Pour python 2.x utilisezprint >> f1, args
.la source
from __future__ import print_function
. Ensuite, vous pouvez utiliser la notation claire dans les deux, Python 2 et 3.AttributeError: 'str' object has no attribute 'write'
votre syntaxe python3f1 = open('path_to_your_file', 'w')
Vous pouvez exporter l'instruction d'impression vers un fichier sans modifier aucun code. Ouvrez simplement une fenêtre de terminal et exécutez votre code de cette manière:
la source
Cela redirigera votre sortie 'impression' vers un fichier:
la source
En Python 3.0+,
print
est une fonction que vous appelleriezprint(...)
. Dans la version précédente,print
est une déclaration que vous feriez avecprint ...
.Pour imprimer dans un fichier en Python antérieur à 3.0, vous feriez:
L'
>>
opérateur dirige l'impression vers le fichierf
.la source