【发布时间】:2018-01-21 22:40:17
【问题描述】:
不确定这是否可能。我有一组 python 脚本,并修改了 ~/.bashrc 中的 linux PATH,这样每当我打开终端时,python 脚本就可以作为命令运行。
export PATH=$PATH:/home/user/pythonlib/
my_command.py 位于上述路径中。
我可以在终端的任何地方运行 my_command.py (args),它会运行 python 脚本。
我想通过不同的 Python 脚本控制此功能,因为这将是自动化处理例程的最快解决方案。所以我需要它来打开一个终端并从我正在处理的 python 脚本中运行 my_command.py (args)。
我已经尝试过子进程:
import subprocess
test = subprocess.Popen(["my_command.py"], stdout=subprocess.PIPE)
output = test.communicate()[0]
虽然 my_command.py 通常在我启动的任何终端中都可用,但在这里我无法访问它,返回未找到文件。
我可以使用 os 启动一个新终端,然后输入 my_command.py,它就可以工作了
os.system("x-terminal-emulator -e /bin/bash")
那么,有没有办法让第二种方法接受你想用 args 从 python 运行的脚本?
Ubuntu 16
谢谢:)
【问题讨论】:
-
可执行文件名为
my_command.py,而不是my_command。$my_command是什么?是否有一个名为my_command的 shell 变量是您希望 python 知道的? -
从终端,我只需要输入“my_command”而不是.py。在子进程中添加 .py 没有区别。 my_command 只是一个 python 文件 my_command.py。
-
my_command、my_command.py和$my_command是三个不同的东西,或者你有符号链接吗?这不是 Windows,它不会自动添加扩展名,还是您在 shell 中使用别名? -
我很抱歉造成混乱。 $ 只是表示终端窗口。我没有在任何地方写“我的命令”?当您注册 python 项目的 PATH 时,您可以从终端窗口将文件 my_command.py 引用为只是 my_command。
-
shell 中的别名。