Mam bazę kodu w Pythonie, zbudowaną dla Pythona 3, która używa stylu open () w Pythonie 3 z parametrem kodowania:
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
Teraz chciałbym przenieść ten kod do Pythona 2.x, aby mieć bazę kodu, która działa z Pythonem 2 i Pythonem 3.
Jaka jest zalecana strategia obejścia open()
różnic i braku parametru kodowania?
Czy mogę mieć open()
moduł obsługi plików w stylu Python 3 , który przesyła strumieniowo bajty, więc działałby jak Python 2 open()
?
źródło
Myślę
powinieneś zrobić.
źródło
from io import open
użyję w Pythonie 3? Obecnie nie zależy mi na wydajności.Oto jeden sposób:
źródło
f
To może załatwić sprawę:
Następnie możesz zachować kod w sposób python3.
Zauważ, że niektóre API podoba
newline
,closefd
,opener
nie działająźródło
pass
.Jeśli używasz
six
, możesz spróbować tego, dzięki czemu wykorzystujesz najnowszy interfejs API Python 3 i możesz działać zarówno w Pythonie 2/3:A porzucenie obsługi Pythona 2 to po prostu usunięcie wszystkiego, co dotyczy
six
.źródło