Python3.7 с GNU / Linux и использованием os.makedirs () - PermissionError: [Errno 13] В доступе отказано

1
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

Почему python устанавливает разрешения для статической папки на "d---------", если в коде я задал значение umask для процесса "0o777"?
Как я могу сказать python установить разрешения 777 при создании папок с помощью makedirs?

Теги:
python-3.x

1 ответ

3
Лучший ответ

umask указывает, какие разрешения НЕ установлены. Вероятно, вам нужно os.umask(0o000). Дополнительную информацию см. В http://man7.org/linux/man-pages/man2/umask.2.html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню