我一直在跟随this SO solution从golang调用python并捕获go代码的返回,以解码简单的csv并转换为json
此命令在cli中作为命令工作:
$ python3.7 -c "exec(\"import csv,json \na=list() \nfor i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)) \nb=dict(enumerate(a)) \nc=json.dumps(b, sort_keys=True, indent=4) \nprint(c)\")"
从Golang,命令集如下所示:
cmd := exec.Command("python", "-c", "import csv,json; a=list(); for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)); b=dict(enumerate(a)); c=json.dumps(b, sort_keys=True, indent=4); print(c)")
但是,我得到了以下错误:
exit status 1
File "<string>", line 1
import csv,json; a=list(); for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)); b=dict(enumerate(a)); c=json.dumps(b, sort_keys=True, indent=4); print(c)
^
SyntaxError: invalid syntax
我想我需要将缩进移回与for循环平行的位置,但是如何从stringized命令中实现这一点呢
提前谢谢
更新:
下面是工作的python等价物,分配c
变量的行需要沿着for loop
a = list()
for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')):
a.append(json.dumps(i))
c = json.dumps(dict(enumerate(a)), sort_keys=True, indent=4)
print(c)
如果您运行
python -
。它将从stdin
读取程序。这对于来自不同来源的任意长的python脚本非常有用尝试使用换行符传递参数,并使用原始字符串文字更正缩进:
相关问题 更多 >
编程相关推荐