Python mkdir дает мне неправильные разрешения

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

всякий раз, когда я создаю эту папку (через Python), он создает папку, которая не дает мне никаких разрешений вообще и только для чтения.

когда я пытаюсь создать файл, я получаю IOError.

Error:  <type 'exceptions.IOError'>

Я попытался создать (и поиск) для описания всех других режимов (кроме 0770).

может ли кто-нибудь дать мне свет? Каковы другие коды режимов?

4 ответов


после создания папки вы можете установить разрешения с os.chmod

мод написан в базе 8, Если вы конвертируете его в двоичный, это будет

000 111 111 000
    rwx rwx rwx

первый rwx для владельца, вторая для группы, и третий в мире

r=чтение, w=запись, x=выполнение

разрешения, которые вы видите чаще всего являются
7 чтение / запись / выполнение - вам нужно выполнить для каталогов, чтобы увидеть содержимое
Шесть читать/писать
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 принимает любой синтаксис, поэтому выбранный вами будет зависеть от того, хотите ли вы быть совместимыми вперед или назад.


у вас, вероятно, есть фанки umask. Попробуй!--0--> перед созданием каталога.


в руководстве Python говорится:

os.mkdir(path[, mode])

создайте каталог с именем path в режиме числового режима. По умолчанию используется режим 0777 (восьмеричное). В некоторых системах режим игнорируется. Там, где он используется, текущее значение umask сначала маскируется. В Наличии: ОС Unix, ОС Windows.

вы указали режим - какой режим вы указали. Вы рассматривали возможность явного указания режима? И какое значение umask программы установлено в"


Так как ваш на Windows, это может быть crapshoot. Убедитесь, что нет никаких дурацких специальных разрешений на родительский каталог или с параметрами политики, определяющими разрешения, которые получают все каталоги, созданные вашей учетной записью. Я сомневаюсь, что это проблема python, поскольку я не смог воссоздать проблему в Windows с относительно ванильной установкой Vista.