python:如何在另一个程序中通过命令行调用(将用户的击键作为输入)运行程序?

python:如何在另一个程序中通过命令行调用(将用户的击键作为输入)运行程序?,python,ros,Python,Ros,我可以通过在命令行中键入:python enable_robot.py-e来运行一个程序,但我想在另一个程序中运行它 在另一个程序中,我导入了subprocess并拥有subprocess.Popen(['enable_robot','baxter_tools/scripts/enable_robot.py','-e']),但我收到了一条关于回调的错误消息 如果我注释掉这一行,我的程序的其余部分工作得非常好 关于如何更改这一行以使代码正常工作,或者是否完全不应该使用子流程,有什么建议吗 如果en

我可以通过在命令行中键入:
python enable_robot.py-e
来运行一个程序,但我想在另一个程序中运行它

在另一个程序中,我导入了subprocess并拥有
subprocess.Popen(['enable_robot','baxter_tools/scripts/enable_robot.py','-e'])
,但我收到了一条关于回调的错误消息

如果我注释掉这一行,我的程序的其余部分工作得非常好


关于如何更改这一行以使代码正常工作,或者是否完全不应该使用子流程,有什么建议吗

如果
enable_robot.py
需要用户输入,那么它可能不是要从另一个python脚本运行的。您可能希望将其作为模块导入:
import enable\u robot
,然后从那里运行要使用的函数

如果要继续执行子流程,可以使用
通信
传递输入:

p = subprocess.Popen(['enable_robot', 'baxter_tools/scripts/enable_robot.py','-e'])
p.communicate(input=b'whatever string\nnext line')

communicate
,.

如果
enable_robot.py
需要用户输入,那么它可能不是从另一个python脚本运行的。您可能希望将其作为模块导入:
import enable\u robot
,然后从那里运行要使用的函数

如果要继续执行子流程,可以使用
通信
传递输入:

p = subprocess.Popen(['enable_robot', 'baxter_tools/scripts/enable_robot.py','-e'])
p.communicate(input=b'whatever string\nnext line')

通信
,。

您的程序
启用机器人.py
应满足以下要求:

  • 第一行是一条路径,指示用于解释的程序 剧本。在本例中,它是python路径
  • 您的脚本应该是可执行的
一个非常简单的例子。我们有两个python脚本:called.py和caller.py 用法:caller.py将使用
subprocess.Popen()
文件/tmp/called.py 文件/tmp/caller.py 使两者都可执行: caller.py输出: $/tmp/caller.py

$OK


您的程序
enable_robot.py
应满足以下要求:

  • 第一行是一条路径,指示用于解释的程序 剧本。在本例中,它是python路径
  • 您的脚本应该是可执行的
一个非常简单的例子。我们有两个python脚本:called.py和caller.py 用法:caller.py将使用
subprocess.Popen()
文件/tmp/called.py 文件/tmp/caller.py 使两者都可执行: caller.py输出: $/tmp/caller.py

$OK


你能粘贴错误信息吗?你为什么不直接导入并使用功能,而不是直接输出到它?错误信息,请…你能粘贴错误信息吗?你为什么不直接导入并使用功能,而不是直接输出到它?错误信息,请…如果我导入它,如果它仍然需要用户键入-u或-e,我将如何运行该函数?main方法不接受参数——它使用某种类型的参数解析。我是Python的新手,如果这是琐碎的东西,很抱歉。你可能想粘贴该文件的内容。通常python程序的编写方式是,如果直接从命令行
https://docs.python.org/3/library/__main__.html
但如果您想使用其他函数,可以导入这些函数。@leojim“main”在python中没有特殊意义,通常它是一个函数,而不是一个方法。你是来自Java吗?如果我导入它,如果它仍然需要用户键入-u或-e,我将如何运行该函数?main方法不接受参数——它使用某种类型的参数解析。我是Python的新手,如果这是琐碎的东西,很抱歉。你可能想粘贴该文件的内容。通常python程序的编写方式是,如果直接从命令行
https://docs.python.org/3/library/__main__.html
但如果您想使用其他函数,可以导入这些函数。@leojim“main”在python中没有特殊意义,通常它是一个函数,而不是一个方法。你是不是碰巧从爪哇来的?
#!/usr/bin/python
import subprocess
proc = subprocess.Popen(['/tmp/called.py'])
chmod +x /tmp/caller.py
chmod +x /tmp/called.py