web-dev-qa-db-ja.com

PermissionError:[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 Windows 10 x64

17
Marc Schmitt

編集

私は答えに少しの活動を見ているので、この問題を抱えている人のために少し改善することにしました

Windowsで管理者execution特権を実現するには、基本的に3つの主な方法があります。

  1. cmd.exeから管理者として実行しています
  2. 昇格された特権でファイルを実行するためのショートカットを作成する
  3. python実行可能ファイルのアクセス許可の変更(非推奨)

1)cmd.exe asおよびadminの実行

WindowsにはSudoコマンドがないので、Sudoと同等の権限レベルを達成するために、管理者として端末(cmd.exe)を実行する必要があります。これには2つの方法があります。

  1. 手動で

    • cmd.exeC:\Windows\system32を検索
    • それを右クリック
    • Run as Administratorを選択します
    • 次に、ディレクトリC:\Windows\system32でコマンドプロンプトを開きます。
    • プロジェクトディレクトリに移動します
    • プログラムを実行する
  2. キーショートカットを介して

    • Windowsキー(通常altctrlの間)+ Xを押します。
    • さまざまな管理者タスクを含む小さなポップアップリストが表示されます。
    • Command Prompt (Admin)を選択します
    • プロジェクトディレクトリに移動します
    • プログラムを実行する

これを行うことにより、管理者として実行しているため、この問題は持続しません。

2)昇格した特権でショートカットを作成する

  1. python.exeのショートカットを作成します
  2. ショートカットを右クリックし、Propertiesを選択します
  3. ショートカットターゲットを"C:\path_to\python.exe" C:\path_to\your_script.py"のようなものに変更します
  4. ショートカットのプロパティパネルで[詳細]をクリックし、[管理者として実行]オプションをクリックします

この質問のdelphifirstによる回答

3)python実行可能ファイルのアクセス許可の変更(非推奨)

これは可能性ですが、そうしないことを強くお勧めします。

単にpython実行可能ファイルを見つけ、毎回管理者として実行するように設定するだけです。ファイルの作成(管理者のみ)や、実行するのに管理者でないことを必要とするモジュールなどの問題を引き起こす可能性があります。

13
Mixone

すべてのユーザーが読み取りおよび書き込み権限を持つように、保存するディレクトリの権限を変更します。

7
dione llorera

これは、Pycharmを使用しているWindowsマシンで起こりました。

修正:PyCharmアプリケーションを右クリックして、管理者として実行します。

3
Emmanuel

書き込もうとしているファイルが最初に閉じられていることを確認してください。

2
Chrono Hax

問題は、開きたいファイルのパスにある可能性があります。パスを印刷してみて、問題がないかどうかを確認してください

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)

完全に機能しました

2
oyamo brian

ここでの問題は、ユーザーが適切な権限を持っていないことです rights/permissions ファイルを開くには、実行する前にpython ideにいくつかの管理権限を付与する必要があることを意味しますそのコマンド。

あなたがWindowsユーザーであるので、あなたはただ必要ですpython ideを右クリック=>オプション '管理者として実行'そしてコマンドを実行します。

コマンドラインを使用してコードを実行している場合は、同じことを行いますコマンドを開きます管理者権限でプロンプトを表示

1

同様の問題に直面しました。私はWindows上でAnacondaを使用しており、次のように解決しました:1)スタートメニューから「Anaconda Prompt」を検索します2)右クリックして「管理者として実行」を選択します3)インストール手順に従います...

これは許可の問題を処理します

0
Chinnappa Reddy

書き込もうとしているファイルが開いていないか、バックグラウンドのプログラムがこのファイル/データを保持していないことを再確認してください。これは私にとって問題でした。

0
aek8

PermissionError:[Errno 13]許可が拒否されました:

Excelでの作業中に上記のエラーが発生し、Excelが開いていた後、閉じてコードを実行しようとしました。それは私のために働いた。

ファイルが開いている必要があります。ファイルを閉じてコードを再度実行すると、動作するはずです。

0
Hariprasath