我试图让 python 运行一个终端命令,这将改变我的桌面壁纸。在普通终端中运行此命令将更改我的墙纸。但是,当我尝试让 python 在终端中运行此命令时,它不起作用并给我一个错误。
当我以 root 用户身份打开终端时,我可以复制此错误。我使用 su 登录并输入了我的密码。输入命令然后给我一个错误并且它不执行。当我尝试使用模块 os 或子进程使用 python 执行命令时也是如此。
是不是因为我更改以 pcmanfm (即窗口管理器)开头的壁纸的命令存在路径问题,而当我是 root 用户时,路径已更改?
在我的树莓派上的“pi”案例中,如何让 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身份打开终端呢?或者这不是问题吗?谢谢!