Pourquoi essayer d’imprimer directement dans un fichier au lieu de sys.stdout
génère-t-il 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 changer le flux standard d’impression écrit dans le flux?
Je sais qu'il existe différentes manières peut-être meilleures 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!
Si vous souhaitez utiliser la fonction print
dans Python 2, vous devez importer à partir de __future__
:
from __future__ import print_function
Mais vous pouvez aussi avoir le même effet sans utiliser la fonction:
print >>f1, 'This is a test'
print est un mot clé dans python 2.X. Vous devriez utiliser ce qui suit:
f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
print(args, file=f1)
est la syntaxe python 3.x. Pour python 2.x, utilisez print >> f1, args
.
Vous pouvez exporter une déclaration d’impression dans un fichier sans changer de code. Ouvrez simplement une fenêtre de terminal et lancez votre code de la manière suivante:
python yourcode.py >> log.txt
Cela redirigera votre sortie 'print' vers un fichier:
import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
Dans Python 3.0+, print
est un fonction, que vous appelez avec print(...)
. Dans les versions antérieures, print
est une instruction, que vous feriez avec print ...
.
Pour imprimer sur un fichier dans Python antérieur à la version 3.0, procédez comme suit:
print >> f, 'what ever %d', i
L'opérateur >>
dirige l'impression vers le fichier f
.