从 bash 开始一个 Python 脚本,并将一个字符串放入标准输入
Starting a Python script from bash with a string placed into stdin
如何启动一个 Python 脚本,其中一些输入已经在标准输入中等待。例如,假设我有一个位于 main.py
的简单脚本,使用 Python3:
mystr = input()
print(mystr)
如果您只是从终端调用 python3 main.py
,脚本会暂停并等待您输入内容。点击回车后,它将继续并打印出您输入的内容。但是有没有办法在脚本执行之前将一些东西放入标准输入?这样脚本就不会暂停,它会接受已经存在的内容。我在设想这样的事情:
python3 main.py | my string
但这不起作用。
请注意,我不是在询问命令行参数:我正在编写一个必须从标准输入获取输入的应用程序,所以我正在寻找一个方便的解决方案来测试在那种环境下。
这并不取决于涉及 Python 脚本这一事实,同样的方法可以将字节输入到在 bash 下启动的任何进程的标准输入中(您可能想要在您的问题中添加 bash
标签以反映这一点):
将短字符串输入其中
echo 'my string' | python3 main.py
将样本输入文件输入其中
cat my_input | python3 main.py
您也可以像这样提供文件
python3 mail.py < my_input
[注意:有些人喜欢花很多时间争论方法 3 比方法 2 好,(如果您有兴趣搜索 'useless use of cat'),但我更喜欢方法2(出于超出您问题范围的原因)。使用对您来说最有意义的那个。]
如何启动一个 Python 脚本,其中一些输入已经在标准输入中等待。例如,假设我有一个位于 main.py
的简单脚本,使用 Python3:
mystr = input()
print(mystr)
如果您只是从终端调用 python3 main.py
,脚本会暂停并等待您输入内容。点击回车后,它将继续并打印出您输入的内容。但是有没有办法在脚本执行之前将一些东西放入标准输入?这样脚本就不会暂停,它会接受已经存在的内容。我在设想这样的事情:
python3 main.py | my string
但这不起作用。
请注意,我不是在询问命令行参数:我正在编写一个必须从标准输入获取输入的应用程序,所以我正在寻找一个方便的解决方案来测试在那种环境下。
这并不取决于涉及 Python 脚本这一事实,同样的方法可以将字节输入到在 bash 下启动的任何进程的标准输入中(您可能想要在您的问题中添加 bash
标签以反映这一点):
将短字符串输入其中
echo 'my string' | python3 main.py
将样本输入文件输入其中
cat my_input | python3 main.py
您也可以像这样提供文件
python3 mail.py < my_input
[注意:有些人喜欢花很多时间争论方法 3 比方法 2 好,(如果您有兴趣搜索 'useless use of cat'),但我更喜欢方法2(出于超出您问题范围的原因)。使用对您来说最有意义的那个。]