我正在尝试使用apache_beam.io.gcp.gcsio模块在Google云存储中编写CSV文件
with GcsIO().open(filename=filename, mode='w', mime_type='text/plain') as outf:
writer = csv.DictWriter(outf, fieldnames=fieldnames, extrasaction='ignore')
writer.writeheader()
writer.writerows(rows)
fieldnames是一个字符串列表,rows是一个字典列表,可供编写器使用
错误的最后几行是:
File "C:\Program Files\Python38\lib\csv.py", line 143, in writeheader
return self.writerow(header)
File "C:\Program Files\Python38\lib\csv.py", line 154, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
TypeError: a bytes-like object is required, not 'str' [while running 'ParDo(WriteCSVToGCS)']
我尝试用不同的mime类型(text/csv
或默认值)打开GCS文件,但错误总是一样的
传递给DictWriter的所有数据都是字符串,通常都是字符串,但在传递给DictWriter之前将其编码为字节并不能纠正错误
同样的代码使用io.StringIo
对象作为outf
也能很好地工作,因此使用gcsio
对象似乎真的有问题
目前没有回答
相关问题 更多 >
编程相关推荐