Dlaczego próba drukowania bezpośrednio do pliku zamiast sys.stdout
generowania następującego błędu składniowego:
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
Z pomocy (__ builtins__) mam następujące informacje:
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.
Jaka byłaby zatem właściwa składnia do zmiany standardowych zapisów strumieniowych?
Wiem, że istnieją inne, być może lepsze sposoby zapisywania do pliku, ale naprawdę nie rozumiem, dlaczego powinien to być błąd składni ...
Byłoby mile widziane miłe wyjaśnienie!
python
file
python-2.7
Alex
źródło
źródło
print()
jest funkcją wbudowaną w pythonie 3.x, natomiastprint
operatorem jest python <3.x. Post pokazuje2.7.2+
.from __future__ import print_function
? W Pythonie <3 print to instrukcja:help(__builtins__)
wyświetlanie tego w ogóle jest błędem.__builtins__.__dict__['print'](value, file=f1)
działa, choć).Odpowiedzi:
Jeśli chcesz użyć
print
funkcji w Pythonie 2, musisz zaimportować z__future__
:Ale możesz mieć ten sam efekt również bez korzystania z funkcji:
źródło
print jest słowem kluczowym w Pythonie 2.X. Powinieneś użyć następujących:
źródło
print(args, file=f1)
jest składnią języka Python 3.x. W przypadku Pythona 2.x użyjprint >> f1, args
.źródło
from __future__ import print_function
. Następnie możesz użyć wyraźnej notacji w obu Pythonie 2 i 3.AttributeError: 'str' object has no attribute 'write'
z twoją składnią python3f1 = open('path_to_your_file', 'w')
Możesz wyeksportować instrukcję drukowania do pliku bez zmiany kodu. Po prostu otwórz okno terminala i uruchom kod w ten sposób:
źródło
Spowoduje to przekierowanie wyjścia 'print' do pliku:
źródło
W Pythonie 3.0+
print
jest to funkcja , którą można wywołaćprint(...)
. We wcześniejszej wersjiprint
jest to oświadczenie , które zrobiłbyś za pomocąprint ...
.Aby wydrukować do pliku w Pythonie starszym niż 3.0, zrobiłbyś:
>>
Operator kieruje wydruk do plikuf
.źródło