카테고리 없음
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에서 안전하고 권한을 고려한 파일 처리를 구현할 수 있습니다.