我可以在命令行中键入:python enable_robot.py -e
来运行一个程序,但我想从另一个程序中运行它。
在另一个程序中,我导入了子进程并且有subprocess.Popen(['enable_robot', 'baxter_tools/scripts/enable_robot.py','-e'])
,但是我收到一条错误消息,说明有关回调的信息。
如果我注释掉这一行,我程序的其余部分就可以正常工作了。
有关如何更改此行以使我的代码工作或者我根本不应该使用子进程的任何建议?
答案 0 :(得分:0)
如果enable_robot.py
需要用户输入,可能不打算从另一个python脚本运行。您可能希望将其作为模块导入:import enable_robot
并从那里运行您要使用的功能。
如果您想坚持使用子流程,可以使用communicate
传递输入:
p = subprocess.Popen(['enable_robot', 'baxter_tools/scripts/enable_robot.py','-e'])
p.communicate(input=b'whatever string\nnext line')
communicate
documentation,example。
答案 1 :(得分:0)
您的计划enable_robot.py
应符合以下要求:
subprocess.Popen()
#!/usr/bin/python
print("OK")
#!/usr/bin/python
import subprocess
proc = subprocess.Popen(['/tmp/called.py'])
chmod +x /tmp/caller.py
chmod +x /tmp/called.py
$ /tmp/caller.py
$ OK