亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 exec 從 golang 內聯 python3 和返回結果

使用 exec 從 golang 內聯 python3 和返回結果

Go
慕田峪9158850 2023-08-14 17:48:18
我一直在遵循這個從 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 循環平行的位置,但是字符串化命令怎么可能做到這一點呢?提前致謝。更新:下面是等效的 python 工作,分配c變量的行需要沿著for loopa = 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)
查看完整描述

2 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

如果你跑python -。它將讀取程序stdin。這對于來自不同來源的任意長的 python 腳本非常有用。


python_source = `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)`


 cmd := exec.Command("python", "-")

 cmd.Stdin = strings.NewReader(python_source)

 ...


查看完整回答
反對 回復 2023-08-14
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

嘗試使用換行符傳遞參數并使用原始字符串文字正確縮進:


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)

`)


查看完整回答
反對 回復 2023-08-14
  • 2 回答
  • 0 關注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號