我正在处理的当前项目让我编写了一个pi来通过libre office自动运行PowerPoint文件。
我正在使用subprocess.Popen尝试打开和关闭仅显示PowerPoint文件。
以下行以外的所有代码都可以正常工作:
p = subprocess.Popen(['/usr/share/applications/libreoffice-impress.desktop', '/home/pi/Desktop/test.ppsx])
此行返回“权限被拒绝”错误。但是,可执行文件和.ppsx文件都将所有权限设置为任何人。这包括通向它们的路径中的所有文件夹。
我忘记授予特定文件的权限了吗?或者另一个文件是否需要具有正确的权限?或者是否有一个更好的命令我应该用来完全打开和关闭PowerPoints?
答案 0 :(得分:1)
只需直接使用命令,libreoffice --impress
这就是/usr/share/applications/libreoffice-impress.desktop
内部的执行,它会正常工作,你不会担心权限:
subprocess.check_call(['libreoffice', '--impress', '/home/pi/Desktop/test.ppsx'])
当你想要调用一个进程时, check_call会更好,如果进程返回非零退出状态,你会知道它会引发一个CalledProcessError
。
如果您更喜欢使用.desktop,我建议您在主目录中创建一个,你也可以沿着sudo路线走,但考虑到你可以直接运行那个没有多大意义的命令。