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