Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PermissionError: [Errno 13] Permission denied

I'm getting this error :

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' 

When running this :

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!!') 

Can someone tell me what I am doing wrong?

Specs : Python 3.4.4 x86 Windows 10 x64

like image 436
Marc Schmitt Avatar asked Apr 05 '16 18:04

Marc Schmitt


People also ask

How do I fix PermissionError errno 13 Permission denied?

To fix PermissionError: [Errno 13] Permission denied with Python open, we should make sure the path we call open with is a file. to make sure that the path is a path to a file with os. path. isfile before we call open to open the file at the path .

How do I fix permission is denied in Python?

Permission denied simply means the system is not having permission to write the file to that folder. Give permissions to the folder using "sudo chmod 777 " from terminal and try to run it. It worked for me.

How do I change permissions in Python?

Set file permissions (chmod) To change file permissions, you can use os. chmod(). You can bitwise OR the following options to set the permissions the way you want. These values come from the stat package: Python stat package documentation.

How do I change folder permissions in Python?

os. chmod(path, 0444) is the Python command for changing file permissions in Python 2. x. For a combined Python 2 and Python 3 solution, change 0444 to 0o444 .


2 Answers

This happens if you are trying to open a file, but your path is a folder.

This can happen easily by mistake.

To defend against that, use:

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

The assertion will fail if the path is actually of a folder.

like image 55
Gulzar Avatar answered Sep 21 '22 18:09

Gulzar


There are basically three main methods of achieving administrator execution privileges on Windows.

  1. Running as admin from cmd.exe
  2. Creating a shortcut to execute the file with elevated privileges
  3. Changing the permissions on the python executable (Not recommended)

A) Running cmd.exe as and admin

Since in Windows there is no sudo command you have to run the terminal (cmd.exe) as an administrator to achieve to level of permissions equivalent to sudo. You can do this two ways:

  1. Manually

    • Find cmd.exe in C:\Windows\system32
    • Right-click on it
    • Select Run as Administrator
    • It will then open the command prompt in the directory C:\Windows\system32
    • Travel to your project directory
    • Run your program
  2. Via key shortcuts

    • Press the windows key (between alt and ctrl usually) + X.
    • A small pop-up list containing various administrator tasks will appear.
    • Select Command Prompt (Admin)
    • Travel to your project directory
    • Run your program

By doing that you are running as Admin so this problem should not persist

B) Creating shortcut with elevated privileges

  1. Create a shortcut for python.exe
  2. Righ-click the shortcut and select Properties
  3. Change the shortcut target into something like "C:\path_to\python.exe" C:\path_to\your_script.py"
  4. Click "advanced" in the property panel of the shortcut, and click the option "run as administrator"

Answer contributed by delphifirst in this question

C) Changing the permissions on the python executable (Not recommended)

This is a possibility but I highly discourage you from doing so.

It just involves finding the python executable and setting it to run as administrator every time. Can and probably will cause problems with things like file creation (they will be admin only) or possibly modules that require NOT being an admin to run.

like image 41
Mixone Avatar answered Sep 21 '22 18:09

Mixone