如何在Python中“捕获”程序的stdin、stdout、stderr?

如何在Python中“捕获”程序的stdin、stdout、stderr?,python,command-line-interface,stdout,stdin,Python,Command Line Interface,Stdout,Stdin,我有一个sql.exe,它有一个命令行界面,接受sql查询作为输入并打印结果。我需要用Python编写一个程序,它将生成sql命令,将它们作为输入传递给这个程序并读取输出 为了练习,我用python编写了一个玩具程序adder.py: 我已经创建了一个in.txt文件: 我从cmd:-$python adder.pyout.txt执行 out.txt是: 15 10 3 我的问题是,如何流式处理/缓冲输入和输出,以不断与程序通信,而不必一次又一次地创建和读取文件?在代码中使用bash管道和两

我有一个sql.exe,它有一个命令行界面,接受sql查询作为输入并打印结果。我需要用Python编写一个程序,它将生成sql命令,将它们作为输入传递给这个程序并读取输出

为了练习,我用python编写了一个玩具程序adder.py:

我已经创建了一个in.txt文件:

我从cmd:-$python adder.pyout.txt执行 out.txt是:

15
10
3

我的问题是,如何流式处理/缓冲输入和输出,以不断与程序通信,而不必一次又一次地创建和读取文件?

在代码中使用bash管道和两个不同的函数 尝试用这种方法重新思考您的计划

/mycode.py-gen | sqlite3 |/mycode.py-proc 您的程序将接受一个选择行为的命令行参数 从SQL生成输入或处理输出

字符|是Bash中的管道操作数

处理SQL输出的函数必须读取stdin

命令行参数 您必须读取并验证命令行参数,并选择执行两个不同的函数。 看这里

Bash管道 关于bash中的管道

command1 | command2
command1的标准输出通过管道连接到command2的标准输入。 示例:回显我的密码| shasum-a 256

从标准文本中读取 这里有几个如何阅读标准文本的例子

示例代码 请参见示例代码。 下面是使用SQLite在macOS和Ubento中测试的输出示例:

>/mycode.py-gen 选择0+0; 选择1+2; 选择2+4; ... >./mycode.py-gen | sqlite3 0 3. 6. ... >./mycode.py-proc乘以标准输入的10 >/mycode.py-gen | sqlite3 |/mycode.py-proc 0 30 60 ...
还有一件事。sql.exe程序可以使用类似于>export'filename.xml'+tablename;的命令将表导出到文件中;。是否可以在管道中捕获此输出而不是写入文件?我无法访问sql.exe的源代码。您正在运行什么sql实现?MySQL,SQLite,PostgreSQL。。。?请参阅文档,尝试以下操作:man sql.exe或sql.exe-h或sql.exe-help,或仅运行sql.exe,并查看如何在命令shell中获取帮助。
15
10
3

command1 | command2