Python - IOError: [Errno 13] Permission denied:

PythonFileIo

Python Problem Overview


I'm getting IOError: [Errno 13] Permission denied and I don't know what is wrong wit this code.

I'm trying to read a file given an absolute path (meaning only file.asm),

and a relative path (meaning /.../file.asm), and I want the program to write the file to whatever path is given - if it is absolute, it should write it to the current dir; otherwise, to the path given.

the code:

#call to main function
if __name__ == '__main__':
    assem(sys.argv[1])


import sys

def assem(myFile):
    from myParser import Parser
    import code
    from symbolTable import SymbolTable

    table=SymbolTable()

    # max size of each word
    WORD_SIZE = 16
    # rom address to save to
    rom_addrs = 0
    # variable address to save to
    var_addrs = 16

    # new addition
    if (myFile[-4:] == ".asm"):
        newFile = myFile[:4]+".hack"

    output = open(newFile, 'w') <==== ERROR

the error given:

IOError: [Errno 13] Permission denied: '/Use.hack'

the way I execute the code :

python assembler.py Users/***/Desktop/University/Add.asm 

What am I doing wrong here?

Python Solutions


Solution 1 - Python

Just Close the opened file where you are going to write.

Solution 2 - Python

It looks like you're trying to replace the extension with the following code:

if (myFile[-4:] == ".asm"):
    newFile = myFile[:4]+".hack"

However, you appear to have the array indexes mixed up. Try the following:

if (myFile[-4:] == ".asm"):
    newFile = myFile[:-4]+".hack"

Note the use of -4 instead of just 4 in the second line of code. This explains why your program is trying to create /Use.hack, which is the first four characters of your file name (/Use), with .hack appended to it.

Solution 3 - Python

You don't have sufficient permissions to write to the root directory. See the leading slash on the filename?

Solution 4 - Python

This happened to me when I was using 'shutil.copyfile' instead of 'shutil.copy'. The permissions were messed up.

Solution 5 - Python

I had a same problem. In my case, the user did not have write permission to the destination directory. Following command helped in my case :

chmod 777 University

Solution 6 - Python

Maybe You are trying to open folder with open, check it once.

Solution 7 - Python

For me nothing from above worked. So I solved my problem with this workaround. Just check that you have added SYSTEM in directory folder. I hope it will help somoene.

import os
# create file
@staticmethod
def create_file(path):
    if not os.path.exists(path):
        os.system('echo # > {}'.format(path))

# append lines to the file
split_text = text_file.split('\n')
    for st in split_text:
        os.system('echo {} >> {}'.format(st,path))

Solution 8 - Python

Check if you are implementing the code inside a could drive like box, dropbox etc. If you copy the files you are trying to implement to a local folder on your machine you should be able to get rid of the error.

Solution 9 - Python

For me, this was a permissions issue.

Use the 'Take Ownership' application on that specific folder. However, this sometimes seems to work only temporarily and is not a permanent solution.

Solution 10 - Python

FYI I had this permission error because the file that it was trying to create was already open/used by another program (was created last time the script was run, I had opened it with excel, and then got a permission error when it was trying to recreate it)

leaving this here in case someone else finds it useful, it is not the real solution to the question asked

Solution 11 - Python

I got this error because the directory didn't exist yet.

Solution: create the directory

import os
if not os.path.exists(directory):
	os.makedirs(directory)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionItzik984View Question on Stackoverflow
Solution 1 - PythonVickyView Answer on Stackoverflow
Solution 2 - PythonGreg HewgillView Answer on Stackoverflow
Solution 3 - PythonJames YoungmanView Answer on Stackoverflow
Solution 4 - PythonJasonView Answer on Stackoverflow
Solution 5 - PythonSukhiView Answer on Stackoverflow
Solution 6 - PythonletmecheckView Answer on Stackoverflow
Solution 7 - PythonPythonManView Answer on Stackoverflow
Solution 8 - PythonAditya CholaView Answer on Stackoverflow
Solution 9 - PythonswyveuView Answer on Stackoverflow
Solution 10 - PythonelfeView Answer on Stackoverflow
Solution 11 - PythonSagar BhattView Answer on Stackoverflow