Python에서 디렉터리 권한을 테스트하시겠습니까?
윈도우의 파이썬에서 사용자가 디렉토리에 액세스할 수 있는 권한이 있는지 확인할 수 있는 방법이 있나요? 제가 살펴봤는데 잘못된 결과가 나와요.
>>> os.access('C:\haveaccess', os.R_OK)
False
>>> os.access(r'C:\haveaccess', os.R_OK)
True
>>> os.access('C:\donthaveaccess', os.R_OK)
False
>>> os.access(r'C:\donthaveaccess', os.R_OK)
True
내가 뭘 잘못하고 있나요? 사용자가 디렉토리에 액세스할 수 있는 권한이 있는지 확인할 수 있는 더 좋은 방법이 있습니까?
Windows(윈도우)에서 사용 권한을 확인하는 것은 복잡할 수 있습니다(예: UAC를 사용하는 Vista의 문제에 주의! -- 이 항목 참조).
디렉토리의 내용을 읽는 것과 같은 간단한 읽기 액세스를 말하는 건가요? 권한을 테스트하는 가장 확실한 방법은 디렉터리에 액세스하여 예외를 탐지하는 것입니다(예: do an).
또한 경로를 올바르게 해석하려면 원시 문자열을 사용하거나 백슬래시('\\')를 이스케이프하거나, 대신 슬래시를 사용해야 합니다.
(EDIT: 경로를 만드는 권장 방법을 사용하여 슬래시를 모두 방지할 수 있습니다.)
os.access는 경로에 액세스할 수 있는지 여부를 확인하기 위해 최선을 다하지만 완벽하다고 주장하지는 않습니다. Python 문서에서:
참고: 액세스()가 성공할 것임을 나타내는 경우에도 I/O 작업이 실패할 수 있으며, 특히 일반적인 POSIX 권한 비트 모델 이상의 권한 의미를 가질 수 있는 네트워크 파일 시스템의 작업의 경우에는 더욱 그렇습니다.
사용자가 무엇이든 할 수 있는 액세스 권한이 있는지 확인하고 발생하는 예외를 포착하는 권장 방법입니다.
실제로 'C:\have access'는 r'C:\have access'와 다릅니다. Python의 관점에서 'C:\haveaccess'는 올바른 경로가 아니므로 'C:\\\have access' 대신 사용합니다. OS 접속이 잘 되는 것 같아요.
/를 사용하는 @dF.의 접근법에 대한 코드를 제공할 것이다:
def can_access(path: str) -> bool:
"""Check if we can access folder on network drive"""
try:
os.scandir(path)
return True
except PermissionError:
return False
'개발하자' 카테고리의 다른 글
Python을 설치하려면 ipykernel을 설치해야 함 (0) | 2023.07.19 |
---|---|
Python 및 Selenium 웹 드라이버를 사용하여 style="display: none;"로 요소를 스크랩합니다 (0) | 2023.07.18 |
Python 3에서 edf 데이터를 읽는 방법 (0) | 2023.07.17 |
VS 코드 주피터: 파이썬 대화형 창을 기본 콘솔로 작동시킬 수 있는 방법이 있나요? (0) | 2023.07.16 |
FastAPI 엔드포인트 내의 동적 URL로 리디렉션하는 방법은 무엇입니까? (0) | 2023.07.16 |