Python 2.7: Stampa su file
-
26-10-2019 - |
Domanda
Perché il tentativo di stampare direttamente su un file invece di prodotti sys.stdout
il seguente errore di sintassi:
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
Da aiuto (__ builtins__) Ho le seguenti informazioni:
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.
Quindi, quale sarebbe la sintassi diritto di modificare le operazioni di scrittura flusso di stampa standard di?
So che ci sono diversi modi forse meglio scrivere di file, ma io davvero non capisco perché questo dovrebbe essere un errore di sintassi ...
Una bella spiegazione sarebbe apprezzato!
Soluzione
Se si desidera utilizzare la funzione di print
in Python 2, è necessario importare da __future__
:
from __future__ import print_function
Ma si può avere lo stesso effetto senza utilizzare la funzione, anche:
print >>f1, 'This is a test'
Altri suggerimenti
di stampa è una parola chiave in python 2.X. Si consiglia di utilizzare il seguente:
f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
print(args, file=f1)
è la sintassi di Python 3.x.
Per pitone uso 2.x print >> f1, args
.
È possibile esportare dichiarazione stampa su file senza modificare il codice. Basta aprire una finestra di terminale ed eseguire il codice in questo modo:
python yourcode.py >> log.txt
Questo reindirizzerà l'output 'di stampa' in un file:
import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
In Python 3.0+, print
è un Funzione , che si chiamerebbe con print(...)
. Nella versione precedente, print
è un istruzione , che saresti con print ...
.
Per stampare su un file in Python precedenti alla 3.0, faresti:
print >> f, 'what ever %d', i
L'operatore >>
dirige stampa al file f
.