open()でファイルを読み込もうとしたら
こんなエラーがでた。
file = "zzz_test.txt" with open(file, "r", "utf-8") as f_r: print f_r.readline()
Traceback (most recent call last): File "zzz_opentest.py", line 3, in <module> with open(file, "r", "utf-8") as f_r: TypeError: an integer is required
バージョンは2.7を使っている。
Python 2.7.14
結論から言えば、3コ目の引数には文字コードではなく
ファイル読み込みのバッファ数を指定すべきなので、
(もしくは指定しない。)
「integerが必要だよ!」っとメッセージがでるようです。
open(file, "r", "utf-8") ---> xダメ open(file, "r") ---> OK
2. 組み込み関数 — Python 2.7.14 ドキュメント
似たようなことで困った人いたみたい。
stackoverflow.com
どこで間違えたかなーと思い返すと
特殊なファイルをオープンするときに使う
gzipやcodecと間違えてた。
gzip.open(file, "r", "utf-8") codecs.open(file, "r", "utf-8")
でencodingをつけてもエラーになる。
Traceback (most recent call last): File "zzz_opentest.py", line 4, in <module> with open(file, "r", encoding="utf-8") as f_r: TypeError: 'encoding' is an invalid keyword argument for this function
調べてみたら、encodingはpython3からみたいですね。
まとめ
- python2でopen()は文字コードつけない。つけるんならcodec.open()、io.open()は文字コードつけられる。
- python3だとopen()に文字コードつけられる。
【PR】搾取されてない.....!?
客先常駐で働いているエンジニアの方お疲れ様です。
IT業界でSESとして働いている人は多いんですが、自分のマージンや月額単価を知らない人がけっこう多いみたいですね。
自分もそうでした。(^^;)
でもそれかなりもったいないですよ。理由はこちらリツアンSTCの紹介記事を見てみてください。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
blog.suganoo.net
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2018/04/12
- メディア: 大型本
- この商品を含むブログ (1件) を見る