小编Dav*_*ave的帖子

Python pathlib Path().mkdir() 将所需模式应用于最终目录,但将 mode-umask 模式应用于父目录 - bug?

我正在使用 pathlib 设置文件夹结构,我希望将树中所有文件夹的权限设置为 drwxrwx--- (770)。

我当前的代码是:

p=Path('name/{}/{}/{}/category'.format(year,month,day))
pp=Path('name/{}/{}/{}'.format(year,month,day))
p.mkdir(mode=0o770,parents=True,exist_ok=True)
Run Code Online (Sandbox Code Playgroud)

我需要exist_ok=True因为我希望在循环category值时使用同一条线。但是,在测试时我正在删除这些文件夹。

跑完之后,

oct(p.stat().st_mode)
0o40770
oct(pp.stat().st_mode)
0o40775
Run Code Online (Sandbox Code Playgroud)

即,父目录的默认权限为777(umask=002)。

我能想到的解决这个问题的唯一方法(似乎效率很低)是:

p.mkdir(mode=0o770,parents=True,exist_ok=True)
os.system("chmod -R 770 {}".format(name))
Run Code Online (Sandbox Code Playgroud)

有没有办法通过调用应用所需的权限Path().mkdir(),或者os.system()调用是不可避免的吗?

python permissions parent mkdir pathlib

4
推荐指数
1
解决办法
3125
查看次数

标签 统计

mkdir ×1

parent ×1

pathlib ×1

permissions ×1

python ×1