【发布时间】:2018-07-15 13:41:27
【问题描述】:
我需要从数据框生成 postgres 架构。我发现 csvkit 库最适合匹配数据类型。我可以通过 docs 中的以下命令通过终端在我的桌面上运行 csvkit 并在 csv 上生成 postgres 架构:
csvsql -i postgresql myFile.csv
csvkit 文档 - https://csvkit.readthedocs.io/en/stable/scripts/csvsql.html
我可以通过以下代码在我的脚本中运行终端命令:
import os
a=os.popen("csvsql -i postgresql Desktop/myFile.csv").read()
但是我有一个数据框,我已将其转换为 csv 字符串,需要从字符串生成架构,如下所示:
csvstr = df.to_csv()
在文档中它说在位置参数下:
The CSV file(s) to operate on. If omitted, will accept
input on STDIN
如何将我的变量 csvstr 作为变量传递到代码行 a=os.popen("csvsql -i postgresql csvstr").read() 中?
我尝试执行以下代码行但收到错误OSError: [Errno 7] Argument list too long: '/bin/sh':
a=os.popen("csvsql -i postgresql {}".format(csvstr)).read()
提前谢谢你
【问题讨论】:
标签: python-3.x postgresql stdin csvkit