如何在Python中“捕获”程序的stdin、stdout、stderr?
我有一个sql.exe,它有一个命令行界面,接受sql查询作为输入并打印结果。我需要用Python编写一个程序,它将生成sql命令,将它们作为输入传递给这个程序并读取输出 为了练习,我用python编写了一个玩具程序adder.py: 我已经创建了一个in.txt文件: 我从cmd:-$python adder.py如何在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管道和两
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