【问题标题】:Starting a Python script from bash with a string placed into stdin从 bash 启动 Python 脚本,并将字符串放入 stdin
【发布时间】:2017-02-18 17:41:56
【问题描述】:

如何启动一个 Python 脚本,其中一些输入已经在标准输入中等待。例如,假设我有一个位于main.py 的简单脚本,使用 Python3:

mystr = input()
print(mystr)

如果您刚刚从终端调用python3 main.py,脚本会暂停并等待您输入内容。点击回车后,它将继续并打印出您输入的内容。但是有没有办法在脚本执行之前将一些东西放入标准输入中?这样脚本就不会暂停,它会接受已经存在的内容。我设想的是这样的: python3 main.py | my string 但这不起作用。

请注意,我不是在询问命令行参数:我正在编写一个必须从标准输入获取输入的应用程序,因此我正在寻找一种方便的解决方案来测试该环境。

【问题讨论】:

  • echo 'my string' | python3 main.py 不起作用吗?
  • 或者如果您有样本输入文件,cat my_input | python3 main.py
  • @Jonathan 您的解决方案有效。如果你把它变成一个答案,我会接受它。

标签: python bash stdin


【解决方案1】:

这不依赖于涉及 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 (出于超出您问题范围的原因)。使用对您最有意义的。]

【讨论】:

  • 酷,我添加了bash标签
猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2016-09-15
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多