Por que tentar imprimir diretamente em um arquivo em vez de sys.stdout
produzir o seguinte erro de sintaxe:
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 ajuda (__ builtins__), tenho as seguintes informações:
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.
Então, qual seria a sintaxe certa para alterar as gravações de impressão de fluxo padrão?
Eu sei que existem diferentes maneiras talvez melhores de gravar em um arquivo, mas eu realmente não entendo por que isso deve ser um erro de sintaxe ...
Uma boa explicação seria apreciada!
python
file
python-2.7
alex
fonte
fonte
print()
é a função integrada python 3.x, enquantoprint
é o operador python <3.x. O post mostra2.7.2+
.from __future__ import print_function
? Em Python <3, imprimir é uma declaração:help(__builtins__)
exibir isso é um bug.__builtins__.__dict__['print'](value, file=f1)
não funciona, embora).Respostas:
Se você quiser usar a
print
função em Python 2, terá que importar de__future__
:Mas você pode ter o mesmo efeito sem usar a função também:
fonte
imprimir é uma palavra-chave em python 2.X. Você deve usar o seguinte:
fonte
print(args, file=f1)
é a sintaxe do python 3.x. Para uso 2.x pythonprint >> f1, args
.fonte
from __future__ import print_function
. Então você pode usar a notação clara em ambos, Python 2 e 3.AttributeError: 'str' object has no attribute 'write'
com sua sintaxe python3f1 = open('path_to_your_file', 'w')
Você pode exportar a instrução de impressão para um arquivo sem alterar nenhum código. Basta abrir uma janela de terminal e executar seu código desta maneira:
fonte
Isso redirecionará sua saída de 'impressão' para um arquivo:
fonte
No Python 3.0+,
print
é uma função com a qual você chamariaprint(...)
. Na versão anterior,print
é uma declaração que você faria comprint ...
.Para imprimir em um arquivo em Python anterior à 3.0, você faria:
O
>>
operador direciona a impressão para o arquivof
.fonte