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 Readonly
당신이 사용할 때 os.chmod
Octal 표기법을 사용하는 것이 가장 합리적입니다
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)
디렉토리를 만들기 전에.
파이썬 매뉴얼은 다음과 같이 말합니다.
os.mkdir(path[, mode])
숫자 모드 모드로 PATH라는 이름의 디렉토리를 만듭니다. 기본 모드는 0777 (Octal)입니다. 일부 시스템에서는 모드가 무시됩니다. 사용되는 경우 현재 Umask 값이 먼저 마스킹됩니다. 가용성 : Unix, Windows.
모드를 지정 했습니까? 어떤 모드를 지정 했습니까? 모드를 명시 적으로 지정하는 것을 고려 했습니까? 그리고 프로그램의 Umask 값은 "로 설정된"
Windows를 사용하고 있으므로 이것은 문제가 될 수 있습니다.상위 디렉터리 또는 계정에서 생성된 모든 디렉터리에 부여되는 권한을 정의하는 정책 설정에 이상한 특수 권한이 없는지 확인하세요.상대적으로 바닐라 Vista를 설치한 Windows에서 문제를 재현할 수 없었기 때문에 이것이 Python 문제인지 의심됩니다.