我想从 raspberry pi 3 raspbian 上的 Python 脚本启动一个进程。
在 Windows 上,以下代码可以工作:
import os
def openFile():
try:
os.startfile("/home/pi/Desktop")
except:
print("invalid path")
但在这里我返回无效路径。
你能告诉我如何解决这个问题以及如何打开应用程序吗?
我记得在 Windows 中:
路径中有 Notepad.exe
,我可以打开它,但是对于 Linux 我应该怎么说?我的意思是 Linux 中的 .exe
是什么,我可以打开它吗?
答案 0 :(得分:2)
os.startfile
是 only available for Windows。您应该改用 subprocess
库。试试我改编的 @user4815162342 的这个独立于平台的解决方案
import os, sys, subprocess
def open_file(filename):
if sys.platform == "win32":
os.startfile(filename)
else:
opener = "open" if sys.platform == "darwin" else "xdg-open"
subprocess.run([opener, filename])
如果您的文件只是一个 bash 脚本,您可以将 subprocess.run
行替换为
subprocess.run(["bash", filename])
答案 1 :(得分:2)
据我所知,您尝试做的不是 open
而是 execute
。因此,您可以通过搜索“Linux 上的python 执行文件”来找到更多相关信息。尽管如此,您正在尝试执行一个目录,而不是一个文件。所以,这是我要做的一个例子:
import subprocess
subprocess.call(['/bin/ls', '-l'])
这将调用位于 ls
文件夹中的可执行文件 /bin
并为其提供一个参数:-l
。它将列出您当前目录中的文件(但是,请记住,您不应该为此使用 ls
,这只是一个示例。如果您想列出目录中的文件,在蟒蛇)。
说到文件扩展名,Linux 上的可执行文件(类似于 Windows 的 .exe 文件)称为 ELF 文件,它没有规范的扩展名。事实上,与 Windows 相比,Linux 对扩展的关心要少得多。如果您想了解更多关于哪些文件可以在 Linux 上执行、执行权限等,请在互联网上搜索信息和/或在 https://superuser.com)
上提问