IOError: [Errno 13] Python에서 권한이 거부되었습니다.

Zeeshan Afridi 2023년6월21일
  1. Python의 파일 처리에서 IOError: [Errno 13] 권한 거부됨이란 무엇입니까?
  2. Python에서 IOError: [Errno 13] 권한 거부됨을 수정하는 방법
  3. chmod 명령을 사용하여 Python에서 파일의 권한을 변경하는 방법
IOError: [Errno 13] Python에서 권한이 거부되었습니다.

우리 인간은 대부분 컴퓨터의 GUI와 상호 작용하기 때문에 IOError를 얻는 것이 일반적입니다. 비주얼에서 폴더, 파일, 압축 파일 또는 애플리케이션 간의 차이점을 이해합니다.

우리는 폴더, 파일, 압축 파일 또는 응용 프로그램과 너무 자주 상호 작용하여 이제 우리의 두뇌가 때때로 이들을 구별하는 처리를 하지 않습니다.

그러나 다른 한편으로는 시각적인 것만 이해하지 못하는 컴퓨터에 모든 것을 제공해야 합니다. 오히려 전체 세부 정보를 제공해야 합니다.

Python의 파일 처리에서 IOError: [Errno 13] 권한 거부됨이란 무엇입니까?

파일 처리에서 액세스하려는 파일의 전체 경로를 제공해야 합니다. 그렇지 않으면 IOError가 표시됩니다. 파일을 열고 싶지만 대신 폴더 경로를 제공한 경우 IOError: [Errno 13] 권한 거부됨이 표시됩니다.

다음은 Python 오류의 코드 예입니다.

# opening file
f = open("E:\Projects\Test_folder", "r")

출력:

PermissionError: [Errno 13] Permission denied: 'E:\\Projects\\Test_folder'

위의 예에서는 Test_folder를 읽기 모드로 열려고 하지만 PermissionError: [Errno 13] Permission denied가 발생했습니다.

Python에서 IOError: [Errno 13] 권한 거부됨을 수정하는 방법

이 문제를 해결하려면 폴더가 아니라 액세스하려는 파일의 올바른 경로를 입력해야 합니다. Test_folder에 두 개의 파일이 있다고 가정해 보겠습니다.

import os

# Folder Path
folder_path = "E:\Client Project Report\Test_folder"

# display all files in a folder
print(f"All files in the Test_folder are\n{os.listdir(folder_path)}")

# file path
file_path = "E:\Client Project Report\Test_folder\Test_file_1.txt"

# read file
f = open(file_path, "r")
print(f"\n{f.read()}")

# file closed
f.close()

출력:

All files in the Test_folder are
['Test_file_1.txt', 'Test_file_2.txt']

Hi There!
This is test file 1

파일 경로를 제공하면 오류가 해결됩니다. 또한 Python에서 열린 파일을 닫는 것이 좋습니다. 그러면 파일이 다시 열릴 때까지 아무도 해당 파일을 더 이상 읽고 쓸 수 없으며, 닫힌 파일을 쓰거나 읽으려고 하면 값 오류.

파일의 참조 객체가 다른 파일에 할당되면 파이썬은 자동으로 파일을 닫습니다. 그러나 여전히 close() 함수로 파일을 닫는 것이 좋습니다.

또한 try-catch 블록과 같은 예외 처리 메커니즘을 사용하여 이러한 오류를 포착하고 프로그램 충돌을 방지할 수 있습니다.

chmod 명령을 사용하여 Python에서 파일의 권한을 변경하는 방법

설명한 바와 같이 허용되지 않은 파일을 열려고 하면 IOError: [Errno 13] 권한 거부가 발생합니다.

액세스가 허용되지 않은 폴더를 열려고 하지만 여전히 해당 폴더를 열기 위해 Python으로 스크립트를 작성하려고 하면 폴더에 대한 액세스 권한이 거부되고 Python 컴파일러에서 오류가 발생한다고 가정해 보겠습니다. .

이 오류를 해결하기 위해 change mode를 나타내는 chmod 명령]을 사용할 수 있습니다. chmod()에는 두 개의 인수, 액세스하려는 파일/폴더의 경로와 파일 모드가 필요합니다.

chmod 명령은 파일의 파일 권한을 변경하는 데 사용되며 특정 파일의 권한 플래그를 변경하여 수행됩니다.

권한 플래그는 파일 소유자, 파일 그룹 및 기타 모든 사용자에 대한 읽기, 쓰기 및 실행 권한을 지정하는 데 사용되는 3자리 8진수 값으로 표시됩니다.

chmod 구문:

chmod(path, mode)

이 명령은 두 가지 인수를 사용합니다.

  1. 첫 번째는 권한을 변경하려는 파일의 경로입니다.
  2. 두 번째는 설정하려는 권한입니다.

filename이라는 파일에 대해 모든 사람에게 읽기 및 쓰기 권한을 부여한다고 가정해 보겠습니다. 다음 명령을 사용합니다.

chmod 777 filename

위 명령에 대한 Python 스크립트는 다음과 같습니다.

import os

os.chmod("my_file", 0o777)

이 코드는 다음과 같이 나타낼 수도 있습니다.

import os
import stat

path = "E:\Project\file1.txt"

# stat.S_IRWXU --> All permissions (Read, write, and execute) to the owner
# stat.S_IRWXG --> All permissions (Read, write, and execute) to group
# stat.S_IRWXO --> All permissions (Read, write, and execute) to others

print(os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO))

이렇게 하면 모든 사람에게 특정 파일에 대한 읽기, 쓰기 및 실행 권한이 부여됩니다.

chmod에서 세 개의 8진수는 무엇을 나타냅니까?

파일의 권한은 8진수를 사용하여 나타낼 수 있습니다. 8진수는 3자리 숫자로 구성되며 각 숫자는 서로 다른 권한을 나타냅니다.

  1. 첫 번째 숫자는 소유자의 허가를 나타냅니다.
  2. 두 번째 숫자는 그룹의 권한을 나타냅니다.
  3. 세 번째 숫자는 다른 사람에 대한 권한을 나타냅니다.

파일의 권한은 원하는 권한을 나타내는 8진수와 함께 chmod 명령을 사용하여 변경할 수 있습니다.

예를 들어 파일 소유자에게 읽기, 쓰기 및 실행 권한을 부여하고 그룹 및 다른 사용자에게는 읽기 및 실행 권한만 부여하려면 8진수 755를 사용할 수 있습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error