Python 2.7: Imprimer dans un fichier
-
26-10-2019 - |
Question
Pourquoi essayer d'imprimer directement à un fichier au lieu de produire de sys.stdout
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__) je 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 flux d'impression de standards écrit à?
Je sais qu'il ya différentes façons peut-être mieux d'écrire dans le fichier mais je ne comprends vraiment pas pourquoi cela devrait être une erreur de syntaxe ...
Une bonne explication serait appréciée!
La solution
Si vous voulez utiliser la fonction print
en Python 2, vous devez importer de __future__
:
from __future__ import print_function
Mais vous pouvez avoir le même effet sans utiliser la fonction aussi:
print >>f1, 'This is a test'
Autres conseils
print est un mot-clé en python 2.X. Vous devez utiliser ce qui suit:
f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
print(args, file=f1)
is the python 3.x syntax.
For python 2.x use print >> f1, args
.
You can export print statement to file without changing any code. Simply open a terminal windows and run your code in this way:
python yourcode.py >> log.txt
This will redirect your 'print' output to a file:
import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
In Python 3.0+, print
is a function, which you'd call with print(...)
. In earlier version, print
is a statement, which you'd make with print ...
.
To print to a file in Python earlier than 3.0, you'd do:
print >> f, 'what ever %d', i
The >>
operator directs print to the file f
.