我正在编写一个python字符串来解析来自JSON文件的值,运行一个名为Googler的工具,其中包含一些参数,包括JSON文件中的值,然后将工具的输出保存到一个文件(首选CSV,但那是另一天)。
到目前为止,代码是:
import json
import os
import subprocess
import time
with open("test.json") as json_file:
json_data = json.load(json_file)
test = (json_data["search_term1"]["apparel"]["biba"])
#os.system("googler -N -t d1 "+test) shows the output, but can't write to a file.
result= subprocess.run(["googler", "-N","-t","d1",test], stdout=subprocess.PIPE, universal_newlines=True)
print(result.stdout)
当我运行上面的脚本时,没有任何反应,终端只是空白,直到我发送键盘中断,然后我收到此错误:
Traceback (most recent call last):
File "script.py", line 12, in <module>
result= subprocess.run(["googler", "-N","-t","d1",test], stdout=subprocess.PIPE, universal_newlines=True)
File "/usr/lib/python3.5/subprocess.py", line 695, in run
stdout, stderr = process.communicate(input, timeout=timeout)
File "/usr/lib/python3.5/subprocess.py", line 1059, in communicate
stdout = self.stdout.read()
KeyboardInterrupt
我尝试用字符串替换test
变量,同样的错误。同一行适用于"ls", "-l", "/dev/null"
。
如何提取此工具的输出并将其写入文件?
答案 0 :(得分:1)
您的googler
命令在交互模式下工作。它永远不会退出,所以你的程序会被卡住。
您希望googler运行搜索,打印输出然后退出。
从文档中,我认为--np
(或--noprompt
)是正确的参数。我没有测试过。
result = subprocess.run(["googler", "-N", "-t", "d1", "--np", test], stdout=subprocess.PIPE, universal_newlines=True)