본문 바로가기
카테고리 없음

Python PermissionError: 권한 문제 발생 시 대처법

by luckyvibe 2025. 6. 1.

Python PermissionError란?

`PermissionError`는 Python에서 파일이나 디렉토리에 접근하려 할 때, 사용자가 해당 작업을 수행할 권한이 없을 경우 발생하는 예외입니다. 주로 파일 열기, 생성, 수정, 삭제 시 권한 설정이 잘못되었거나, 관리자 권한이 필요한 작업을 일반 사용자로 실행했을 때 발생합니다.

1. PermissionError 주요 발생 원인

  • 읽기 전용 파일에 쓰기를 시도
  • 디렉토리에 대한 쓰기 권한 없음
  • 시스템 폴더에 파일 생성 또는 접근 시도
  • 다른 프로그램이 해당 파일을 점유 중
  • Windows에서 관리자 권한 없이 시스템 파일 접근

2. PermissionError 예시


with open("/etc/passwd", "w") as f:
    f.write("test")  # 권한 없음
오류 메시지 예:

PermissionError: [Errno 13] Permission denied: '/etc/passwd'

3. PermissionError 해결 방법

3-1. 관리자 권한으로 실행

시스템 파일이나 루트 디렉토리 접근이 필요한 경우 관리자 권한으로 Python 스크립트를 실행하세요. - Windows: Python을 "관리자 권한으로 실행" - Linux/macOS: `sudo python script.py`

3-2. 파일 권한 확인 및 변경

`os.access()` 또는 `os.chmod()` 등을 사용해 파일 또는 디렉토리의 권한을 확인하고 필요 시 수정합니다.

import os

file_path = "data.txt"

if os.access(file_path, os.W_OK):
    with open(file_path, "w") as f:
        f.write("쓰기 가능")
else:
    print("쓰기 권한이 없습니다.")

3-3. 안전한 파일 경로 사용

시스템 폴더나 보호된 경로(`/etc`, `C:\Windows\System32`)가 아닌, 사용자 디렉토리 내 경로를 사용하세요.

import os

user_path = os.path.expanduser("~/myfolder/output.txt")
with open(user_path, "w") as f:
    f.write("내 문서에 저장")

3-4. 예외 처리로 오류 방지

파일 접근 전에 권한 문제를 대비해 `try-except` 문으로 예외를 잡아주는 것이 중요합니다.

try:
    with open("restricted.txt", "w") as f:
        f.write("테스트")
except PermissionError:
    print("권한이 없어 파일을 쓸 수 없습니다.")

3-5. 파일 잠금 확인

다른 프로세스나 백신 프로그램이 파일을 잠그고 있을 수 있습니다. 이 경우 파일을 닫거나, 시스템을 재부팅 후 다시 시도해 보세요.

4. 상황별 PermissionError 해결 요약

상황해결 방법
시스템 폴더에 접근관리자 권한 실행
쓰기 권한 없음파일 권한 변경 또는 사용자 디렉토리 사용
다른 프로그램이 파일 점유해당 프로그램 종료 후 재시도

5. 결론 및 팁

  • `PermissionError`는 권한 설정이나 실행 환경 문제로 발생하는 오류입니다.
  • 항상 사용자 디렉토리를 기본 작업 경로로 설정하고, 파일 접근 전 권한을 확인하세요.
  • 예외 처리를 통해 오류 발생 시 사용자에게 안내하거나 대체 로직을 제공하는 것이 좋습니다.
  • 관리자 권한이 필요한 작업은 명확히 표시하고, 사용자에게 실행 방법을 안내하세요.
이 가이드를 통해 `PermissionError`를 예방하고, Python에서 안전하고 권한을 고려한 파일 처리를 구현할 수 있습니다.