1

我试图让 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身份打开终端呢?或者这不是问题吗?谢谢!

4

1 回答 1

0

问题是将python脚本称为sudo。正常打开python脚本为: Python3 script.py 会以普通用户的身份打开一个终端。更改我的桌面墙纸,而 sudo python3 script.py 以 root 用户身份打开终端,然后更改墙纸的命令不再起作用。

于 2019-08-12T11:09:18.083 回答