如何在 python 中 运行 chmod?

how to run chmod in python?

我正在使用一种名为 Rplidar 的传感器。要将 Rplidar 连接到我的操作系统(Ubuntu),有时我必须在终端中使用此命令:

sudo chmod 666 /dev/ttyUSB0  

运行执行此指令后,ubuntu可以检测到雷达。稍后,我将 运行 一个 python 脚本来与 Rplidar 一起工作。现在我想将这个命令包含在我的 python 脚本中,这样我就不需要在使用 Rplidar 之前在终端中 运行 它。有什么方法可以在 python 脚本中实现吗?

您可以使用 subprocess 库来 运行 shell 命令 Python

import subprocess
subprocess.Popen(["sudo", "chmod", "666", "/dev/ttyUSB0"], stdout=subprocess.PIPE, shell=True)

简单的回答就是chmod在Python中的os模块中提供:

所以你需要做的就是运行:

import os
filename = 'example.dat'
os.chmod(filename,
    stat.S_IRUSR |
    stat.S_IWUSR |
    stat.S_IRGRP |
    stat.S_IWGRP |
    stat.S_IROTH)

所以不需要shell出来正常执行这个操作。另请查看 os.pathshutil 模块,以获得该领域的更多支持。

如果您需要以提升的权限执行此操作,事情会变得有点复杂,但这实际上不是这里的解决方案。

另外,给系统设备666权限也不是个好主意。当系统上的任何用户都可以 read/write 访问系统设备时,这可能会引发安全问题。原则上,使用正确操作所需的最少权限。

作为@KlausD。评论,无论如何你都不应该在这些设备节点上强制更改权限。正确的方法是执行一次性操作,将相关用户添加到系统上的 dialout 组。然后,通过在正确的组中,用户 运行ning 您的应用程序将可以访问该设备。这已经在这里回答:

就运行这一次:

sudo adduser kazi dialout

然后注销并重新登录以使其生效。你的 Rplidar 应用 运行 没问题。