[解決済み] Python 3 の open(encoding="utf-8") を Python 2 にバックポートする。
2022-03-03 11:59:54
質問
Python 3用にビルドされたPythonコードベースがあり、エンコーディングパラメータ付きのPython 3スタイルのopen()を使用しています。
https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47
with open(fname, "rt", encoding="utf-8") as f:
さて、このコードをPython 2.xにバックポートして、Python 2とPython 3で動作するコードベースを手に入れたいと思います。
を回避するための推奨戦略は何ですか?
open()
の違いやエンコーディングパラメータの不足を解決できますか?
Python 3 の
open()
スタイルのファイルハンドラで、バイト列をストリームするため、Python 2の
open()
?
解決方法は?
1. Python 2でエンコーディングパラメータを取得する。
Python 2.6と2.7にのみ対応する必要がある場合は、以下のようになります。
io.open
の代わりに
open
.
io
は Python 3 の新しい io サブシステムで、 Python 2,6 と 2.7 にも存在します。Python 2.6 (および 3.0) では、純粋に Python で実装されており、非常に遅いので、ファイルの読み込みに速度が必要な場合は、良いオプションではないことに注意してください。
スピードが必要で、かつPython2.6以前をサポートする必要がある場合は
codecs.open
代わりに これはエンコーディングパラメータも持っており、以下のように非常によく似ています。
io.open
ただし、行末の扱いが異なる。
2. Python 3を取得するために
open()
形式のファイルハンドラで、バイト列をストリーミングします。
open(filename, 'rb')
バイナリ」を意味する「b」に注目。
関連
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] ファイルを 'rt' と 'wt' モードで開く