programing

권한 오류: [Errno 13] 권한이 거부되었습니다.

skycolor 2023. 5. 27. 09:58
반응형

권한 오류: [Errno 13] 권한이 거부되었습니다.

다음 오류가 발생합니다.

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "C:/Users/Marc/Documents/Programmation/Python/Llamachat/Llamachat/Llamachat.py", line 32, in download
with open(place_to_save, 'wb') as file:
PermissionError: [Errno 13] Permission denied: '/goodbye.txt'

실행 시:

def download():
    # get selected line index
    index = films_list.curselection()[0]
    # get the line's text
    selected_text = films_list.get(index)
    directory = filedialog.askdirectory(parent=root, 
                                        title="Choose where to save your movie")
    place_to_save = directory + '/' + selected_text
    print(directory, selected_text, place_to_save)
    with open(place_to_save, 'wb') as file:
        connect.retrbinary('RETR ' + selected_text, file.write)
    tk.messagebox.showwarning('File downloaded', 
                              'Your movie has been successfully downloaded!' 
                              '\nAnd saved where you asked us to save it!!')

누가 내가 뭘 잘못하고 있는지 말해줄 수 있나요?

사양: Python 3.4.4 x86 윈도우 10 x64

파일을 열려고 하지만 경로가 폴더인 경우 이 문제가 발생합니다.

이것은 실수로 쉽게 일어날 수 있습니다.

이를 방어하려면 다음을 사용합니다.

import os

path = r"my/path/to/file.txt"
assert os.path.isfile(path)
with open(path, "r") as f:
    pass

경로가 실제로 폴더인 경우 어설션이 실패합니다.

를 달성하는 세 .execution윈도우즈에 대한 권한.

  1. 에서 cmd.exe
  2. 상승된 권한으로 파일을 실행하기 위한 바로 가기 만들기
  3. 변권경의 사용 python실행 파일(권장하지 않음)

중인 리기cmd.exe 및 관리자

윈도우즈에는 이 기능이 없기 때문입니다.sudo터미널을 .cmd.exe에로서.sudo이 작업은 두 가지 방법으로 수행할 수 있습니다.

  1. 수동으로

    • » cmd.exeC:\Windows\system32
    • 마우스 오른쪽 단추 클릭
    • 를 선택합니다.Run as Administrator
    • 그런 다음 디렉토리에서 명령 프롬프트를 엽니다.C:\Windows\system32
    • 프로젝트 디렉토리로 이동
    • 프로그램 실행
  2. 키 바로 가기를 사용합니다.

    • 키를 .alt그리고.ctrl + 통보) +X.
    • 다양한 관리자 작업이 포함된 작은 팝업 목록이 나타납니다.
    • 를 선택합니다.Command Prompt (Admin)
    • 프로젝트 디렉토리로 이동
    • 프로그램 실행

이렇게 하면 관리자로 실행되므로 이 문제가 지속되지 않습니다.

상승된 권한으로 바로 가기 만들기

  1. 의 바로 만들기python.exe
  2. 바로 가기를 마우스 오른쪽 단추로 클릭하고 선택Properties
  3. 가기 을 바로가대다음같과것변경으로은상과 같은 합니다."C:\path_to\python.exe" C:\path_to\your_script.py"
  4. 바로 가기의 등록 정보 패널에서 "고급"을 누르고 "관리자 권한으로 실행" 선택사항을 누릅니다.

이 질문에서 Delphi가 먼저 제출한 답변

변권경의 사용 python실행 파일(권장하지 않음)

이것은 가능한 일이지만, 저는 당신이 그렇게 하는 것을 매우 단념합니다.

그것은 단지 그것을 찾는 것을 포함합니다.python실행 파일 및 매번 관리자로 실행되도록 설정합니다.파일 생성(관리자 전용) 또는 실행할 관리자가 아닌 모듈과 같은 문제가 발생할 수 있습니다.

작성하려는 파일이 먼저 닫혀 있는지 확인합니다.

모든 사용자가 읽기 및 쓰기 권한을 갖도록 저장할 디렉토리의 권한을 변경합니다.

관리자로 CMD를 실행하고 cacls.exe를 사용하여 디렉토리의 사용 권한을 변경할 수 있습니다.예:

cacls.exe c: /t /e /g everyone:F # means everyone can totally control the C: disc

제 경우 문제는 파일을 숨겼다는 것입니다(파일이 속성을 숨겼다는 것).
파이썬에서 문제를 해결하는 방법:

편집: 안전하지 않은 방법을 강조합니다. 감사합니다. d33tah.

# Use the method nr 1, nr 2 is vulnerable

# 1
# and just to let you know there is also this way
# so you don't need to import os
import subprocess
subprocess.check_call(["attrib", "-H", _path])


# Below one is unsafe meaning that if you don't control the filePath variable
# there is a possibility to make it so that a malicious code would be executed

import os

# This is how to hide the file
os.system(f"attrib +h {filePath}")
file_ = open(filePath, "wb")
>>> PermissionError <<<


# and this is how to show it again making the file writable again:
os.system(f"attrib -h {filePath}")
file_ = open(filePath, "wb")
# This works

저도 비슷한 문제가 있었습니다.저는 시스템에 있을 거라고 생각했습니다.하지만, 사용하기shutil.copytree()shutil모듈이 문제를 해결해 주었습니다!

열려는 파일의 경로에 문제가 있을 수 있습니다.경로를 인쇄하여 문제가 없는지 확인합니다. 저도 비슷한 문제가 있었습니다.

def scrap(soup,filenm):
htm=(soup.prettify().replace("https://","")).replace("http://","")
if ".php" in filenm or ".aspx" in filenm or ".jsp" in filenm:
    filenm=filenm.split("?")[0]
    filenm=("{}.html").format(filenm)
    print("Converted a  file into html that was not compatible")

if ".aspx" in htm:
    htm=htm.replace(".aspx",".aspx.html")
    print("[process]...conversion fron aspx")
if ".jsp" in htm:
    htm=htm.replace(".jsp",".jsp.html")
    print("[process]..conversion from jsp")
if ".php" in htm:
    htm=htm.replace(".php",".php.html")
    print("[process]..conversion from php")

output=open("data/"+filenm,"w",encoding="utf-8")
output.write(htm)
output.close()
print("{} bits of data written".format(len(htm)))

그러나 이 코드를 추가한 후:

nofilenametxt=filenm.split('/')
nofilenametxt=nofilenametxt[len(nofilenametxt)-1]
if (len(nofilenametxt)==0):
    filenm=("{}index.html").format(filenm)

완벽하게 작동했습니다.

나의 경우에는나는 그냥 만듭니다..idlerc디렉토리가 숨겨졌습니다. 그래서, 내가 한 일은 그 디렉토리에 대한 것과 만들기입니다.recent-files.lst후 숨김 없이 되었습니다.

열어둔 파일에 쓰기 프로그램을 실행하는 중에 이 오류가 발생했습니다.파일을 닫고 프로그램을 다시 실행한 후 프로그램이 오류 없이 실행되어 예상대로 작동했습니다.

저도 비슷한 문제에 직면했습니다.나는 윈도우에서 아나콘다를 사용하고 있으며 다음과 같이 해결했습니다. 1) 시작 메뉴에서 "아나콘다 프롬프트" 검색 2) 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행"을 선택 3) 설치 단계를 따릅니다.

이렇게 하면 권한 문제가 해결됩니다.

오류가 발생한 방법은 다음과 같습니다.

import os

path = input("Input file path: ")

name, ext = os.path.basename(path).rsplit('.', 1)
dire = os.path.dirname(path)

with open(f"{dire}\\{name} temp.{ext}", 'wb') as file:
    pass

사용자가 다음과 같은 두 개 이상의 요소를 포함하는 파일 경로를 입력하면 효과적입니다.

C:\\Users\\Name\\Desktop\\Folder

하지만 저는 그것이 다음과 같은 입력으로 작동할 것이라고 생각했습니다.

file.txt

file.txtpython 파일의 동일한 디렉터리에 있습니다.하지만 아니요, 그것은 저에게 오류를 주었고, 저는 올바른 입력이 있어야 한다는 것을 깨달았습니다.

.\\file.txt

@gulzar가 말했듯이, 나는 파일을 쓰는 데 문제가 있었습니다.'abc.txt'▁in▁▁located서에 위치한 내 파이썬 에서.Z:\project\test.py:

with open('abc.txt', 'w') as file:
    file.write("TEST123")

스크립트를 실행할 때마다 실제로는 Z 대신 C 드라이브에 파일을 만들고 싶어했습니다!그래서 파일 이름이 있는 전체 경로만 다음에 지정했습니다.

with open('Z:\\project\\abc.txt', 'w') as file: ...

그리고작동했습니다.권한을 추가하거나 창에서 아무것도 변경할 필요가 없었습니다.

이것은 어려운 문제입니다. 왜냐하면 오류 메시지는 문제가 있는 곳에서 여러분을 유인하기 때문입니다.

을 볼 때."__init__.py"권한 오류의 근본에 있는 가져온 모듈의 이름 지정 충돌이 있습니다.럼주 한 병을 쌌어요, 거기에"from tkinter import *"파일 맨 위에 있습니다.TKinter 내부에는 스크립트의 다른 위치에서 이미 사용 중인 변수, 클래스 또는 함수의 이름이 있습니다.

다른 증상은 다음과 같습니다.

  1. 스크립트가 실행된 후 즉시 오류 메시지가 표시됩니다.
  2. 이전 Python 버전에서는 스크립트가 제대로 작동했을 수 있습니다.
  3. 관리자 실행 권한에 대한 사용자 Mixon의 긴 설명은 전혀 영향을 미치지 않습니다.콘솔이나 다른 소프트웨어에서 코드에 언급된 파일에 대한 액세스 오류는 없습니다.

솔루션:가져오기 줄을 "import tkinter"로 변경하고 네임스페이스를 코드의 tkinter 메서드에 추가합니다.

다음 두 가지 간단한 단계를 수행합니다.

  1. PC에서 열려 있는 경우 스크립트에 사용되는 문서 닫기
  2. Windows 메뉴에서 "관리자 권한으로 실행"으로 Spyder 실행

오류가 해결되었습니다.

저의 경우, 파일(파이썬 코드를 통해 읽거나 액세스할 파일)을 열어 저장하지 않았습니다.

PermissionError: [Errno 13] Permission denied: 'path_to_the_open_file'

읽기/액세스하기 위해 파일을 저장하고 닫아야 했습니다. 특히 팬더 읽기(pd.read_excel, pd.read_csv등) 또는 명령with open():

이 오류는 실제로 사용할 때도 발생합니다.keras.preprocessing.image예를 들어 다음과 같습니다.

img = keras.preprocessing.image.load_img(folder_path, target_size=image_size)

권한 오류를 발생시킵니다.이상하게도 라이브러리를 처음 가져오면 문제가 해결됩니다.from keras.preprocessing import image그런 다음에만 사용합니다.이와 같은 경우:

img = image.load_img(img_path, target_size=(180,180))

언급URL : https://stackoverflow.com/questions/36434764/permissionerror-errno-13-permission-denied

반응형