Handling Error 13: Permission Denied in Python
Error 13: Permission Denied in Python is an I/O error that occurs when the system cannot communicate with your code to carry out the desired operation. Causes include trying to access a nonexistent file, an already-opened file, opening a directory as a file, or having incorrect permissions. There are multiple ways to fix this error, such as closing other instances of the file, updating permissions, ensuring you’re not accessing a directory, and using try-except blocks for error handling.
The error is very simple as shown below:
IOError: [Errno 13] Permission denied
An input/output error is a type of runtime error. Runtime errors are caused by wrong formats of input or when the code is unable to produce an output.
Since there are no syntax errors in the code, the Python interpreter interprets the code, compiles it, but when executing, it cannot parse particular statements or execute them.
Common Causes of I/O Errors (Permission Denied)
Input/output errors are caused by several reasons. Some of them are:
- The most common cause of an I/O error is if the file specified doesn’t exist.
- When trying to read() or open() a file, the system cannot communicate with the code if the file is already opened somewhere else.
- If you’re trying to open a directory instead of a file, but trying to open it like a file, it will raise an input/output error.
- If there is a forward slash in the path of the directory, it might also raise an i/o error.
- If you don’t have permission to open that particular file or if Python doesn’t have access to the specific directory.
There is a very thorough article on Python i/o errors on ask python, you can check it out here!
Resolving Error 13: Permission Denied in Python
There can be more than one way by which this error can be fixed. They are:
- Making sure you spell the file correctly and not using the path of a directory.
- Making sure that the permissions are updated before trying to access the file.
- The path of the file must be specified without any errors such as a forward slash.
- The file that we’re trying to open shouldn’t be opened somewhere else.
- Using a try and except block to find out where the error arises.
We’ll look at all these methods in depth one by one.
Fix 1: Close Other Instances of the File
When a particular file is opened in Microsoft excel or Microsoft word, this error frequently pops up. This happens because these applications do not let any other application modify a file when used via them.
Hence, make sure you have the files closed before trying to access them via your python code and make sure that on a windows computer no Microsoft office applications are using your file when you’re trying to open() or read() it.
Fix 2: Update Permissions and Run as Administrator
When trying to run your python script make sure you run it via the command prompt in the administrator mode.
This won’t affect your existing permissions for other applications, it will only override the Python permission for this particular script and no other. Make sure you’ve installed Python with the required PATH permissions.
When you open the command prompt, choose “run as administrator” from the right-hand panel as shown below in the picture with the red arrow.
Fix 3: Ensure You Are Not Accessing a Directory
In this case, you’re trying to open a directory instead of trying to open a particular file. This problem can be fixed by specifying the absolute path of a file.
For example, if your file name is “First_program.txt” then you might as well use the command below with open() .
open ('D:/SHREYA/documents/First_program.txt','w')
This helps in avoiding mistakes in specifying file names or paths and even directories.
Fix 4: Use Try and Except Blocks for Error Handling
The try and except statements can be used as well in this case. Try and except blocks are used to handle exceptions in Python. The code for the following would be:
try: open('Our_file.txt','r') except IOError: print("The file cannot be opened")
We have an in-depth article about python exception handling. Click here to read!
Summary
Error 13: Permission Denied in Python can be addressed through various methods and understanding its causes. By applying these solutions, you can avoid hiccups in your programming journey and ensure smooth progress. Have you come across any other creative solutions or preventative measures to tackle permission errors?
Ошибка:[Errno 13] Permission denied
Разработать программу о телефонной компании, которая хранит данные о
своих клиентах. Для простого учета использовать класс Customer (Клиент),
который содержащий атрибуты:
— поле name: имя клиента (чтение/запись);
— свойство balance: баланс счета клиента (только чтение);
— метод record_payment(): выполняет пополнение баланса;
— метод record_call(): выполняет обработку звонка клиента в зависимости
от:типа звонка: «городской» (5 руб./мин.) и «мобильный» (1 руб./мин.);
— количества минут разговора.
Повременный: «городской» (5 руб./мин.) и «мобильный» (1 руб./мин.);
После 10 минут в 2 раза дешевле: после 10 минут звонка на городской
номер каждая вторая минута бесплатно; в остальном как Повременный;
Плати до 5 минут: до 5 минут разговора в 2 раза дешевле тарифа
Повременный, после — в 2 раза дороже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
class Customer: def name(self, l, b1): self.one = l self.b1 = b1 def record_payment(self): print ("name: ", self.one, ", summa: ", self.b1) e = Customer() f = open('C:\\Users\\User\\PycharmProjects\\Евклид') for i in f: print(i) f.close() y = int(input("пополнить баланс клиента? 1 - да, 0 - нет -> ")) if y == 1: f = open("C:\\Users\\User\\PycharmProjects\\Евклид") u = int(input("сколько клиентов?: ")) n = 0 for i in range(u): d1 = input("введите имя ") e.one = d1 e.b1 = int(input("введите сумму ")) d3 = e d3.record_payment() y = int(input("какой тип звонка? 1 - городской, 2 - мобильный -> ")) m = int(input("сколько минут хотите получить ?: ")) if y == 1: if m 5: if m%2 == 0: sum1 = 0.5*m else: sum1 = 0.5*(m - 1) + 0.5 elif m > 5 and m 10: sum1 = 2.5 + (m - 5)*5 else: if m%2 == 0: sum1 = 50 + 0.5*m else: sum1 = 51 + 0.5*(0.5*m - 1) else: if y == 2: if m 5: if m%2 == 0: sum1 = 0.5*m else: sum1 = 0.5*(m - 1) + 0.5 else: if m%2 == 0: sum1 = 50 + 0.5*m else: sum1 = 51 + 0.5*(0.5*m - 1) print("к оплате: ", sum1) a = int(input("добавить клиента? 1 - да, 0 - нет -> ")) if a == 1: f = open("C:\\Users\\User\\PycharmProjects\\Евклид", "a") u = int(input("сколько клиентов?: ")) for i in range (u): f.write("\n") f.write(input("введите имя клиента -> ")) f.close()
Ошибка:[Errno 13] Permission denied: ‘C:\\Users\\User\\PycharmProjects\\Евклид’
Error 13 Permission denied
Помогите разобраться . Имеется программа написанная на питоне и конвертированная в exe с помощью auto-py-to-exe под Windows. В числе прочего, одной из ее функций является создание файла и запись в него некоторых данных. Если ее запустить как обычный пользователь мышкой, то все работает. Но мне нужно что бы она запускалась автоматически при старте системы. И вот как раз при старте работает все кроме записи на диск(файл не создается и нет записи в него). Вывод программы показывает ошибку Error 13 Permission denied.При этом если отключить ее и опять перезапустить в ручную — все работает .Пробовал записывает ее в разные ветки реестра и в HKLM и в HKCU — не работает все равно. В чем может быть проблема? P.S. Владелец файла-администратор с полными правами доступа
Отслеживать
Elpendejo Marco
задан 3 сен 2021 в 7:23
Elpendejo Marco Elpendejo Marco
1 1 1 бронзовый знак
Пожалуйста, исправьте вопрос, чтобы он отражал конкретную проблему с достаточным количеством деталей для возможности дать адекватный ответ.
3 сен 2021 в 7:24
Или файл занят другим процессом и/или нужно программу под админа запускать. Кст, непонятно на что нет прав, у вам там и работа с файлами, и с реестром. Лучше приложите минимальный пример, чтобы не было неоднозначности
3 сен 2021 в 7:26
от чьего имени запускается программа при автозапуске? можно посмотреть в таск-менеджере в закладке «процессы»
Python-сообщество
- Начало
- » Python для новичков
- » Новая программа — новая ошибка : PermissionError: [Errno 13] Permission denied:
#1 Янв. 29, 2017 18:51:13
sepoid Зарегистрирован: 2016-07-24 Сообщения: 19 Репутация: 0 Профиль Отправить e-mail
Новая программа — новая ошибка : PermissionError: [Errno 13] Permission denied:
И снова всем привет
Добрался уже до создания циклов и дублирования файлов в текущей директории. Написал небольшой код, код домашнее задание который выполняет разные действия. Очередное действие которое он должен выполнить, это про дублировать файлы из текущей директории.
import os import sys import psutil import shutil print('PC Scanner') name = input('Назовите свое имя: ') print("Добро пожаловать в компьютерный сканнер," ,name) answer = '' while answer != 'q': answer = input("Желаете чтобы я выполнял ваши задания? (Y/N/q)") if answer == 'Y': print("Я этому очень рад хозяин!") print("Вот что я умею на данный момент:") print(" [1] - выведу список файлов") print(" [2] - выведу информацию о системе") print(" [3] - выведу список процессов") print(" [4] - продублирую список файлов в текущей директории") do = int(input("Укажите какое действие выполнить")) if do == 1: print(os.listdir()) elif do == 2: print("Вот что я знаю о системе:") print("Количество процессоров: ", psutil.cpu_count()) print("Платформа: ", sys.platform) print("Кодировка файловой системы: ", sys.getfilesystemencoding()) print("Текущая директория: ", os.getcwd()) print("Текущий пользователь: ", os.getlogin()) elif do == 3: print(psutil.pids()) elif do == 4: print("Дублирование файлов в текущей директории") file_list = os.listdir() i = 0 while i len(file_list): newfile = file_list[i] + '.dupl' shutil.copy(file_list[i], newfile) # копируй i += 1 else: pass # type, dir, help elif answer == 'N': print("Good Bye!") else: print("Unknown command")
Вроде бы всё сделал как по учебнику, но когда запускаю код, выскакивает ошибка:
Traceback (most recent call last): File "C:\Users\BaDi\Desktop\pc_robot.py", line 40, in module> shutil.copy(file_list[i], newfile) # копируй File "C:\Users\BaDi\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 235, in copy copyfile(src, dst, follow_symlinks=follow_symlinks) File "C:\Users\BaDi\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 114, in copyfile with open(src, 'rb') as fsrc: PermissionError: [Errno 13] Permission denied: 'Новая папка (2)'
Помогите пожалуйста разобраться в чем дело.
P.S. Я так понимаю всё дело в том что для запуска кода нужны права администратора? Если да, то как именно нужно всё это дело запускать?