【发布时间】:2019-08-12 10:13:02
【问题描述】:
我试图让 python 运行一个终端命令,这将改变我的桌面壁纸。在普通终端中运行此命令将更改我的墙纸。但是,当我尝试让 python 在终端中运行此命令时,它不起作用并给我一个错误。
当我以 root 用户身份打开终端时,我可以复制此错误。我使用 su 登录并输入了我的密码。输入命令然后给我一个错误并且它不执行。当我尝试使用模块 os 或子进程使用 python 执行命令时也是如此。
是否因为我更改以 pcmanfm(即窗口管理器)开头的壁纸的命令存在路径问题,而当我是 root 用户时,路径已更改?
如何让 python 在我的树莓派上以“普通”用户身份打开终端,并在其中运行命令?
这是改变我的桌面壁纸的终端命令:
pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg
当我运行我的 python 代码打开终端时会发生这种情况:
root@raspberrypi:/home/pi/Desktop#
而不是正常工作时:
pi@raspberrypi:~ $
这是我的 python 代码,它旨在使用更改我的桌面墙纸的命令打开一个新终端,但是如上所述,我最终以 ROOT 用户身份出现错误并且没有任何反应:
import os,random
import subprocess as sub
sub.call('lxterminal -e bash -c "pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg; sleep 3;exec bash"', shell=True)
从普通终端执行以下操作完美:
lxterminal -e bash -c "pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg; sleep 3;exec bash"
这是运行python代码后的结果,这是我经常得到的错误:
** Message: 12:11:08.734: x-terminal-emulator has very limited support, consider choose another terminal
root@raspberrypi:/home/pi/Desktop#
那么我怎样才能让python以用户“pi”而不是以root身份打开终端? 或者这不是问题吗? 谢谢!
【问题讨论】:
-
使用 "os.system("gnome-terminal")" ,我猜它会帮助你。
标签: python linux python-3.x raspberry-pi pcmanfm