user1921843
user1921843

Reputation: 697

Permission denied error while writing to a file in Python

I want to create a file and write some integer data to it in python. For example, I have a variable abc = 3 and I am trying to write it to a file (which doesn't exist and I assume python will create it on its own):

fout = open("newfile.dat", "w")
fout.write(abc)

First, will python create a newfile.dat on its own? Secondly, it's giving me this error:

IOError: [Errno 13] Permission denied: 'newfile.dat'

What's wrong here?

Upvotes: 47

Views: 319663

Answers (11)

ruben
ruben

Reputation: 19

I know that probably you've already solve this issue, but just in case: My issue was related with the "path" definition when trying to dynamically create folders and sub-folders. I try to pass the "path" directly to the df.to_excel, but you need to first add the file name into the path:

year = str(date_input.year)
month = str(date_input.month)
path = Path('../Project_Files/' + year + '/' + month)
if not os.path.isdir(path):
    path.mkdir(parents=True, exist_ok=True)
else:
    for f in os.listdir(path):
        os.remove(os.path.join(path, f))
path_final = os.path.join(path,'excel.xlsx')
df.to_excel(path_final, index=False)

And it works, without the error of "Permission denied"

Upvotes: 1

Knight Walker
Knight Walker

Reputation: 1

I have had this same issue and i figured that the file is open in my pc and hence the permission denied issue , once i close the file . It would work

Upvotes: 0

five element god
five element god

Reputation: 101

I write python script with IDLE3.8(python 3.8.0) I have solved this question: if the path is shelve.open('C:\\database.dat') it will be PermissionError: [Errno 13] Permission denied: 'C:\\database.dat.dat'. But when I test to set the path as shelve.open('E:\\database.dat') That is OK!!! Then I test all the drive(such as C,D,F...) on my computer,Only when the Path set in Disk

C:\\

will get the permission denied error. So I think this is a protect path in windows to avoid python script to change or read files in system Disk(Disk C)

Upvotes: 6

Yatharth Sah
Yatharth Sah

Reputation: 31

In order to write on a file by using a Python script, you would have to create a text file first. Example A file such as C:/logs/logs.txt should exist. Only then the following code works:

logfile=open(r"C:/logs/logs.txt",'w')

So summary.

  1. A text file should exist on the specified location
  2. Make sure you close the file before running the Python script.

Upvotes: 3

Edwin Rapheal
Edwin Rapheal

Reputation: 131

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.

Upvotes: 11

Santosh Santu
Santosh Santu

Reputation: 91

If you are executing the python script via terminal pass --user to provide admin permissions.

Worked for me!

If you are using windows run the file as admin.

If you are executing via cmd, run cmd as admin and execute the python script.

Upvotes: 1

Omar
Omar

Reputation: 643

I've had the same issue using the cmd (windows command line) like this

C:\Windows\System32> "G:\my folder\myProgram.py"

Where inside the python file something like this

myfile = open('myOutput.txt', 'w')

The error was that when you don't use a full path, python would use your current directory, and because the default directory on cmd is

C:\Windows\System32 

that won't work, as it seems to be write-protected and needs permission & confirmation form an administrator

Instead, you should use full paths, for example:

myfile = open('G:\my folder\myOutput.txt', 'w')

Upvotes: 14

Derek
Derek

Reputation: 1114

This also happens when you attempt to create a file with the same name as a directory:

import os

conflict = 'conflict'

# Create a directory with a given name
try: 
    os.makedirs(conflict)
except OSError:
    if not os.path.isdir(conflict):
        raise

# Attempt to create a file with the same name
file = open(conflict, 'w+')

Result:

IOError: [Errno 13] Permission denied: 'conflict'

Upvotes: 18

Aseem
Aseem

Reputation: 6769

Please close the file if its still open on your computer, then try running the python code. I hope it works

Upvotes: 26

Anto
Anto

Reputation: 610

Make sure that you have write permissions for that directory you were trying to create file by properties

Upvotes: 0

mavili
mavili

Reputation: 3424

To answer your first question: yes, if the file is not there Python will create it.

Secondly, the user (yourself) running the python script doesn't have write privileges to create a file in the directory.

Upvotes: 2

Related Questions