【发布时间】:2021-11-21 21:59:58
【问题描述】:
我正在编写一个 Airflow 自动化作业,它从 Snowflake 仓库中提取数据表并将它们作为 csv 平面文件导出到 sftp。我将 csv 文件导出到本地驱动器,然后将它们发送到 S3,然后再发送到 sftp。注意到对于某些字符序列被特殊字符替换。以下是将雪花表保存到本地驱动器中的 csv 的 Python 代码。
不将编码属性值传递给 to_csv,因为默认值为 utf-8。
import csv
import os
file_name = os.path.join(temp_file_path, _f)
query_output = cur.execute(_sql)
query_output.fetch_pandas_all().to_csv(file_name, index=False, quoting=csv.QUOTE_ALL,
header=False)
header = ','.join([col[0] for col in cur.description])
with open(file_name, 'r+') as f:
content = f.read()
f.seek(0, 0)
f.write(f'{header}\n' + content)
例如。
Snowflake 中有一个属性的值为 研究 - 生产力支持计划 在导出的 csv 到本地驱动器中,它的值是 研究 ‚äì 生产力支持计划
有没有一种方法最有可能作为 to_csv 的参数来停止当前行为。 任何提示/建议都将受到高度重视。
谢谢
【问题讨论】:
-
如果您使用
pandas.read_csv(或任何方法)将文件读回Python,字符是否仍然不正确? -
为什么你需要写一个这样的自定义标题?为什么不在保存到 CSV 文件之前修改数据框?
标签: python python-3.x pandas csv export-to-csv