Saya memiliki basis kode Python, dibuat untuk Python 3, yang menggunakan Python 3 style open () dengan parameter penyandian:
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
Sekarang saya ingin backport kode ini ke Python 2.x, sehingga saya akan memiliki basis kode yang berfungsi dengan Python 2 dan Python 3.
Apa strategi yang disarankan untuk mengatasi open()
perbedaan dan kurangnya parameter pengkodean?
Bisakah saya memiliki open()
penangan file gaya Python 3 yang stream bytestrings, sehingga akan bertindak seperti Python 2 open()
?
sumber
kupikir
harus dilakukan.
sumber
from io import open
Python 3? Saya tidak peduli dengan kinerja saat ini.Ini salah satu caranya:
sumber
f
Ini dapat melakukan trik:
Kemudian Anda dapat membuat kode Anda dengan cara python3.
Perhatikan bahwa beberapa API suka
newline
,closefd
,opener
tidak bekerjasumber
pass
.Jika Anda menggunakan
six
, Anda dapat mencoba ini, dengan yang menggunakan API Python 3 terbaru dan dapat berjalan di kedua Python 2/3:Dan, dukungan Python 2 ditinggalkan hanya menghapus semua yang berhubungan dengan
six
.sumber