私はユニコード文字の最初の行とそれ以外のすべての行をASCIIで記述したテキストファイルを持っています。 最初の行を1つの変数として読み込み、他のすべての行を別の変数として読み込もうとします。しかし、私は次のコードを使用する場合:Python 2.7のOpen()とcodecs.open()は変わった動作をします
# -*- coding: utf-8 -*-
import codecs
import os
filename = '1.txt'
f = codecs.open(filename, 'r3', encoding='utf-8')
print f
names_f = f.readline().split(' ')
data_f = f.readlines()
print len(names_f)
print len(data_f)
f.close()
print 'And now for something completely differerent:'
g = open(filename, 'r')
names_g = g.readline().split(' ')
print g
data_g = g.readlines()
print len(names_g)
print len(data_g)
g.close()
を私は次のような出力が得られます。
<open file '1.txt', mode 'rb' at 0x>
28
7
And now for something completely differerent:
<open file '1.txt', mode 'r' at 0x017875A0>
28
77
私はreadlinesを使用しない場合は()、ファイル全体を読み込み、最初の7行の両方でだけではありませんコーデック.open()とopen()。
なぜこのようなことが起こりますか? なぜ、 'r'パラメータが追加されても、codecs.open()はバイナリモードでファイルを読み込みますか?
UPD:これは、元のファイルです:http://www1.datafilehost.com/d/0792d687
'codecs.open()' *は、デコードする前に改行が見えるように見えるバイトを防ぐためにバイナリモードでファイルを開きます。 UTF-16改行は '\ n \ x00'や' \ x00 \ n'です。 –
元の入力ファイルを共有した方が助かります。 –
@MartijnPieters:あなたの答えをありがとう!ここにファイルがあります:http://wikisend.com/download/406380/1.txt – Kriattiffer