私は、csvファイルオブジェクトに文字列を書き込むためのpython 2/3互換コードを書き込もうとしています。このコード:csvのio.BytesIOへの書き込みはpython3で失敗する
line_as_list = [line.encode() for line in line_as_list]
writer_file = io.BytesIO()
writer = csv.writer(writer_file, dialect=dialect, delimiter=self.delimiter)
for line in line_as_list:
assert isinstance(line,bytes)
writer.writerow(line)
はのpython3でこのエラーを与える:
> writer.writerow(line)
E TypeError: a bytes-like object is required, not 'str'
しかし、アサートがタイプでは問題ないので、なぜcsv
はエラーを作成していますか?
BytesIO
はPython 2と3の両方で使用できません。ここで問題はどこですか?
@tdelaney私は、StringIOとBytesIOが(おそらく 'utf-8'の)ソーステキストに対して同じ表現を与えるかどうかはわかりませんでした。なぜ、私は同じ出力オブジェクトタイプを使用しようとしているのですか? – goelakash