捕获python代码的输出并导出为JSON

时间:2017-04-06 06:10:09

标签: python json python-2.7 subprocess

我有一个名为phone.py的文件,它输出为(在终端中):

+911234567890
+910123321423

可以有更多的输出。

另一个名为email.py的文件,它产生(在终端中):

and@abc.com
bcd@cdc.com

或更多。

我有一个JSON文件,其结构如下:

{"One":"Some data",
 "two":"Some more data",
 "three":"Even more data"}

可以有更多这样的部分。

现在我希望捕获终端输出并加载现有的JSON,最后输出如下(作为JSON文件):

{Phone:"+911234567890,+910123321423", "Email":"and@abc.com,bcd@cdc.com","Sections":"{"One":"Some data",
 "two":"Some more data",
 "three":Even more data"}"}

我试图在python中使用子进程模块捕获输出,现在它存储在变量

subprocess.run(['python','email.py','filename.txt'], stdout= subprocess.PIPE)

输出:

CompletedProcess(args=['python', 'email_txt.py', 'upload/filename.txt'], returncode=0, stdout=b'abc@xyz.com\nbcd@dcd.com\n')

我有一个字符串,其中存储数据而不是我希望通过这些组件获得所需的输出。 我该怎么做或参考解决这个问题?

2 个答案:

答案 0 :(得分:3)

您可以通过subprocess.run简单地从resp.stdout获取标准输出,其中resp是返回的对象。

答案 1 :(得分:0)

正如Rishav已经提到的,您需要将输出分配给变量&然后用它来获取相关属性。

Sample usage -

>>> import subprocess
>>> out = subprocess.run(["ls", "-l", "/dev/null"], stdout=subprocess.PIPE)
>>> out.stdout
b'crw-rw-rw- 1 root root 1, 3 Apr  6  2017 /dev/null\n'