Python mkdir дает мне неправильные разрешения
-
06-07-2019 - |
Вопрос
Я пытаюсь создать папку и создать в ней файл.
Всякий раз, когда я создаю эту папку (через Python), она создает папку, которая не дает мне вообще никаких разрешений и находится в режиме только для чтения.
Когда я пытаюсь создать файл, я получаю ошибку IOError.
Error: <type 'exceptions.IOError'>
Пробовал создавать (и искать) описания всех остальных модов (кроме 0770).
Может ли кто-нибудь дать мне свет?Какие еще коды режимов?
Решение
После создания папки вы можете установить разрешения с помощью os.chmod
Мод написан в базе 8, если конвертировать его в двоичный, то будет
000 111 111 000
rwx rwx rwx
Первый rwx
для владельца, второй для группы и третий для мира
r=чтение,w=запись,x=выполнение
Разрешения, которые вы видите чаще всего:
7 чтение/запись/выполнение — вам нужно выполнить, чтобы каталоги увидели содержимое
6 чтение/запись
4 только для чтения
Когда вы используете os.chmod
имеет смысл использовать восьмеричную нотацию
так
os.chmod('myfile',0o666) # read/write by everyone
os.chmod('myfile',0o644) # read/write by me, readable for everone else
Помните, я говорил, что обычно вы хотите, чтобы каталоги были «исполняемыми», чтобы вы могли видеть их содержимое.
os.chmod('mydir',0o777) # read/write by everyone
os.chmod('mydir',0o755) # read/write by me, readable for everone else
Примечание:Синтаксис 0o777
предназначен для Python 2.6 и 3+.иначе для 2 серии это так 0777
.2.6 принимает любой синтаксис, поэтому выбор того, который вы выберете, будет зависеть от того, хотите ли вы обеспечить прямую или обратную совместимость.
Другие советы
У тебя, наверное, есть прикольный умаск. Попробуйте os.umask (0002)
перед созданием своего каталога.
Руководство по Python гласит:
os.mkdir(path[, mode])
Создайте каталог с именем path в режиме числового режима. Режим по умолчанию - 0777 (восьмеричное). В некоторых системах режим игнорируется. Где это используется, текущее значение маски сначала маскируется. Доступность: Unix, Windows.
Вы указали режим - какой режим вы указали. Вы рассматривали возможность указания режима в явном виде? И какое значение umask программы установлено в "
Так как вы работаете в Windows, это может быть дрянь. Убедитесь, что нет никаких дурацких специальных разрешений для родительского каталога или с параметрами политики, которые определяют разрешения, которые получают любые каталоги, созданные вашей учетной записью. Я сомневаюсь, что это проблема Python, так как я не смог воссоздать проблему в Windows с относительно плохой установкой Vista.