所以我找到了一种在python中读取stdin的方法,如下所示:
if not sys.stdin.isatty():
stdin = sys.stdin.read()
字符串
但对于这样的声明
echo Hello | program.py
型
我只得到stdin = Hello,这就是它应该如何工作。我的问题是,有没有一种方法可以在python程序中将整个命令作为字符串获取,例如,在前面的例子中获取“echo Hello”?
在www.example.com中获取命令的任何替代方法program.py也都可以工作。谢谢您的支持:)
还没有一个好主意,所以还没有尝试任何东西。
1条答案
按热度按时间qv7cva1a1#
不,你不能。你可以把启动一个程序想象成创建一个有两个tube的盒子,stdin和stdout(还有stderr,但是nvm)。
使用
echo Hello | program.py
创建2个框,一个用于echo
,一个用于python
,然后使用|
将echo的stdout管道到python的stdin。你可以先启动python,然后执行
echo Hello
,但是你需要先修改你的python脚本来等待stdin上的输入,然后将输入传递给shell子进程的stdin,读取子进程的stdout并通过它自己的stdout返回给你。