python - Python3.7 与 GNU/Linux 并使用 os.makedirs() - PermissionError: [Errno 13] Permission denied
问题描述
import os
def create_dir(child_dir_str):
try:
pardir = os.path.abspath('static/')
original_umask = os.umask(0o777)
os.makedirs(pardir,exist_ok=True)
child_dir = os.path.join(pardir,child_dir_str)
os.makedirs(child_dir,exist_ok=True)
finally:
os.umask(original_umask)
print('static folder created:', os.path.isdir(pardir))
print('img folder created: ', os.path.isdir(child_dir))
create_dir('img')
当我执行上面的代码时,我得到了这个错误:
[pc@pc-pc xfolder]$ python3.7 test.py
static folder created: True
img folder created: False
Traceback (most recent call last):
File "test.py", line 16, in <module>
create_dir('img')
File "test.py", line 10, in create_dir
os.makedirs(child_dir,exist_ok=True)
File "/usr/lib/python3.7/os.py", line 221, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/home/pc/Desktop/xfolder/static/img'
[pc@pc-pc xfolder]$ ls -l
total 8
d--------- 2 pc pc 4096 ago 27 15:45 static
-rw-r--r-- 1 pc pc 473 ago 27 15:39 test.py
如果在代码上我将进程的umask值设置为“0o777”,为什么python会将静态文件夹的权限设置为“d---------”?
使用 makedirs 创建文件夹时,如何告诉 python 将权限设置为 777?
解决方案
umask
指定不设置哪些权限。你可能想要os.umask(0o000)
。有关详细信息,请参阅http://man7.org/linux/man-pages/man2/umask.2.html。
推荐阅读
- javascript - 在功能组件 React 中调用 fetch 函数
- javascript - 如何将 JSON 数据插入动态下拉列表?
- python - Python tkinter 标签背景图片
- python - Python Web 应用程序中的 H20 内存泄漏
- android - 按 onBackButton 回到我的片段,但我不想
- python - 使用for循环从2个列表python中查找名称
- mysql - 如何创建具有多个多对多关系的连接
- reactjs - 如何在反应中导入fontello
- python - 给定所需的行范围,如何从文本文件中切片数据
- android - Android:为什么使用 Google 登录按钮图标未正确对齐?