这个bash命令在Python中的等效命令是什么?
chmod -R u+x $dir_path
有os.fchmod
,但不确定它是否像原始命令一样递归应用。
这个命令是否和我想要的做的一样?
import os
import stat
from pathlib import Path
fd = Path(dir_path).open().fileno()
os.fchmod(fd, stat.S_IXUSR)
os.chmod
,但这只会更改该单个文件或目录的权限。要逐步更改单个文件的权限(通过添加到现有权限),请使用:import os
import stat
st = os.stat("path/to/file")
os.chmod("/path/to/file", st.st_mode | stat.S_IXUSR)
os.walk
来遍历所有子目录及其文件:import os
import stat
for root, dirs, files in os.walk("path/to/directory"):
for name in dirs:
path = os.path.join(root, name)
st = os.stat(path)
os.chmod(path, st.st_mode | stat.S_IXUSR)
for name in files:
path = os.path.join(root, name)
st = os.stat(path)
os.chmod(path, st.st_mode | stat.S_IXUSR)
以上代码将遍历子目录,并逐步修改权限以仅添加用户执行权限。
还有其他选择,其中一个有趣且明显的选择是:
os.system("chmod -R u+x /path/to/file")
为了以后参考,这里有两个相关的问题:
os.walk(path)
遍历目录,然后逐个对文件进行os.chmod()
操作。不必使用需要文件句柄的os.fchmod(fd)
变体。当然,你也可以使用os.system()
运行 chmod 命令。 - jarmod