使用csv编写器写入GCS文件

2024-06-07 04:46:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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对象似乎真的有问题


Tags: 文件csv字符串textioselffilenamewriter