Mengapa mencoba mencetak langsung ke file alih-alih sys.stdout
menghasilkan kesalahan sintaks berikut:
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
Dari bantuan (__ builtins__) saya memiliki info berikut:
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.
Jadi apa sintaks yang tepat untuk mengubah penulisan stream print standar?
Saya tahu bahwa ada beberapa cara yang mungkin lebih baik untuk menulis ke file tetapi saya benar-benar tidak mengerti mengapa ini harus menjadi kesalahan sintaks ...
Penjelasan yang bagus akan dihargai!
python
file
python-2.7
alex
sumber
sumber
print()
adalah fungsi built-in python 3.x, sedangkanprint
operator python <3.x. Posting menunjukkan2.7.2+
.from __future__ import print_function
? Dalam Python <3, print adalah pernyataan:help(__builtins__)
menampilkan itu semua adalah bug.__builtins__.__dict__['print'](value, file=f1)
meskipun demikian).Jawaban:
Jika Anda ingin menggunakan
print
fungsi di Python 2, Anda harus mengimpor dari__future__
:Tetapi Anda juga dapat memiliki efek yang sama tanpa menggunakan fungsinya:
sumber
print adalah kata kunci di python 2.X. Anda harus menggunakan yang berikut ini:
sumber
print(args, file=f1)
adalah sintaks python 3.x. Untuk penggunaan 2.x pythonprint >> f1, args
.sumber
from __future__ import print_function
. Kemudian Anda dapat menggunakan notasi yang jelas di keduanya, Python 2 dan 3.AttributeError: 'str' object has no attribute 'write'
sintaks python3 Andaf1 = open('path_to_your_file', 'w')
Anda dapat mengekspor pernyataan cetak ke file tanpa mengubah kode apa pun. Cukup buka jendela terminal dan jalankan kode Anda dengan cara ini:
sumber
Ini akan mengarahkan keluaran 'print' Anda ke sebuah file:
sumber
Di Python 3.0+,
print
adalah sebuah fungsi , yang akan Anda panggilprint(...)
. Dalam versi sebelumnya,print
adalah pernyataan , yang akan Anda buat denganprint ...
.Untuk mencetak ke file dengan Python sebelum 3.0, Anda akan melakukan:
The
>>
Operator mengarahkan cetak ke filef
.sumber