小编fel*_*onc的帖子

使用 csv.DictWriter 输出内存中的 gzipped csv 文件?

我想使用DictWriterPython 的csv模块生成一个使用 GZip 压缩的 .csv 文件。我需要在内存中完成这一切,因此不可能使用本地文件。

但是,我在处理 Python 3 中每个模块的类型要求时遇到了麻烦。假设我得到了正确的一般结构,我不能让两个模块一起工作,因为DictWriter需要写入io.StringIO缓冲区,而GZip需要一个io.BytesIO对象。

所以,当我尝试做:

buffer = io.BytesIO()
compressed = gzip.GzipFile(fileobj=buffer, mode='wb')
dict_writer = csv.DictWriter(buffer, ["a", "b"], extrasaction="ignore")
Run Code Online (Sandbox Code Playgroud)

我得到:

TypeError: a bytes-like object is required, not 'str'

尝试使用io.StringIOwithGZip也不起作用。我该怎么办?

python csv io gzip python-3.x

4
推荐指数
1
解决办法
1677
查看次数

使用空字典作为值将 JSON 文件加载到 BigQuery

我正在将一个以换行符分隔的 JSON 文件从 GCS 上传到 BigQuery。JSON 文件中的某些字段包含值的字典,将这些值放入 BigQuery 中没有问题,因为嵌套字段被分解为单独的列。因此,如果以下示例是 JSON 文件中的一行,则一切正常:

{"dict_field": {"value1": 1, "value2": 2}}

但是,如果文件中的一行有一个空字典作为field_dict的值,如下所示:

{"dict_field": {}}

我收到以下错误消息:

异常:BigQuery 作业失败。最终错误是:{'reason':'invalid','message':“字段'dict_field'不支持空结构类型”} [...]

我浏览了 BigQuery 文档,找不到任何关于空字典作为值的规定限制。有谁知道这个问题是否有解决方法,或者我是否必须在将数据导入 BigQuery 之前手动清理数据?

python google-bigquery

2
推荐指数
1
解决办法
2287
查看次数

标签 统计

python ×2

csv ×1

google-bigquery ×1

gzip ×1

io ×1

python-3.x ×1