Вопрос

Я пытаюсь создать папку и создать в ней файл.

Всякий раз, когда я создаю эту папку (через 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top