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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top