2012-09-17 2 views
1

쉘의 mkdir과 동일한 권한을 사용하여 파이썬에서 디렉토리를 만들고 싶습니다. 기본 권한을 사용하여 Python으로 디렉토리를 만들려면 어떻게해야합니까?

standard Python documentation

는 말한다 :

os.mkdir (경로 [모드])

숫자 모드 모드라는 디렉토리 경로를 만듭니다. 기본 모드 은 0777 (8 진수)입니다. 일부 시스템에서는 모드가 무시됩니다. 사용되는 경우 현재 umask 값이 먼저 마스크 아웃됩니다. 이미 디렉터리가 있으면 OSError가 발생합니다.

기본값 인 0777이 아니라 상위 디렉터리에서 상속 된 사용 권한이 필요합니다. 상위 디렉토리의 권한을 조회하지 않고도 그렇게 할 수 있습니까?

답변

6

이미 이며 쉘의 mkdir과 동일한 권한을 얻습니다. 다음으로 불리는 각 DIR 피연산자 상기 MKDIR 유틸리티, IEEE 표준 1003.1-2001으로하는 시스템 인터페이스 볼륨에 정의 MKDIR() 함수에 상응하는 동작을 수행한다 들어

: 쉘 mkdir 함께

arguments :

dir 피연산자가 경로 인수로 사용됩니다.

S_IRWXU, S_IRWXG 및 S_IRWXO의 비트 단위 OR의 값이 mode 인수로 사용됩니다. (-m 옵션이 지정되면, 모드 옵션 인수는이 기본값을 재정의합니다.)

또는 더 판독 가능합니다 (BSD 맨 페이지에서) :

는 ...로 명명 된 디렉토리를 생성 피연산자를 지정된 순서대로 rwxrwxrwx (0777) 모드를 사용하여 현재 umask (2)로 수정합니다.

파이썬의 os.mkdir 않습니다 똑같은 :

... [t] 그가 모드는 0777 기본적 ... 현재의 umask 값이 처음으로 마스크 아웃된다.

실제로 파이썬은 정확히 동일한 인수를 사용하여 쉘 설명서에 언급 된 것과 똑같은 POSIX mkdir 함수를 호출합니다. 그 기능은 다음과 같이 정의됩니다 :

새로운 디렉토리의 파일 허가 비트는 모드에서 초기화되어야합니다. mode 인수의 파일 권한 비트는 프로세스의 파일 생성 마스크에 의해 수정되어야한다.

또는 더 판독 가능, FreeBSD의/OS의 X 맨에서 :

디렉토리 경로가 호출 프로세스의 umask를 (2)에 의해 모드로 지정하고 제한된 액세스 권한으로 작성됩니다.

는 윈도우와 같은 비 POSIX 플랫폼에 있다면, 파이썬은 기본 쉘이 다르게 작동 mkdir라는 명령이있는 경우에도, POSIX 동작을 모방하려고합니다. 주로이 셸의 기본은 md의 동의어 인 mkdir이있는 Windows이고 사용 권한이 문서화되어 있지 않은 경우의 세부 사항이기 때문입니다.

+2

짧은 대답은 :'os.mkdir (somepath)'는 쉘에서'mkdir "$ somepath"와 같은 결과를 만들어 낸다. – jfs

+0

@ J.F.Sebastian : 완전한 답을주기 전에 짧은 답을 생략했다고 지적 해 주셔서 감사합니다. 편집 됨. – abarnert

관련 문제