開きたい巨大なテキスト ファイルがあります。
一度に大量のファイルを読み取ることに関連するメモリの問題を回避して、ファイルをチャンクで読み取っています。
コードスニペット:
def open_delimited(fileName, args):
with open(fileName, args, encoding="UTF16") as infile:
chunksize = 10000
remainder = ''
for chunk in iter(lambda: infile.read(chunksize), ''):
pieces = re.findall(r"(\d+)\s+(\d+_\d+)", remainder + chunk)
for piece in pieces[:-1]:
yield piece
remainder = '{} {} '.format(*pieces[-1])
if remainder:
yield remainder
コードはエラーをスローしますUnicodeDecodeError: 'utf16' codec can't decode bytes in position 8190-8191: unexpected end of data
。
私は試しUTF8
てみましたが、エラーが発生しましUnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
た。
latin-1
iso-8859-1
エラーを発生させましたIndexError: list index out of range
入力ファイルのサンプル:
b'\xff\xfe1\x000\x000\x005\x009\x00\t\x001\x000\x000\x005\x009\x00_\x009\x007\x004\x007\x001\x007\x005\x003\x001\x000\x009\x001\x00\t\x00\t\x00P\x00o\x00s\x00t\x00\t\x001\x00\t\x00H\x00a\x00p\x00p\x00y\x00 \x00B\x00i\x00r\x00t\x00h\x00d\x00a\x00y\x00\t\x002\x000\x001\x001\x00-\x000\x008\x00-\x002\x004\x00 \x00'
また、私はそれらの巨大なテキスト ファイルをいくつか持っていることにも触れておきます。
UTF16
それらの多くでは問題なく動作し、特定のファイルで失敗します。
とにかくこの問題を解決するには?