57

我得到了IOError: [Errno 13] Permission denied,我不知道这段代码有什么问题。

我正在尝试读取给定绝对路径的文件(仅表示file.asm),

和一个相对路径(意思/.../file.asm),我希望程序将文件写入给定的任何路径 - 如果它是绝对的,它应该将它写入当前目录;否则,到给定的路径。

编码:

#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

给出的错误:

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

我执行代码的方式:

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

我在这里做错了什么?

4

11 回答 11

44

只需关闭您要写入的打开文件。

于 2014-03-12T11:20:19.780 回答
18

您似乎正在尝试用以下代码替换扩展名:

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

但是,您似乎混淆了数组索引。尝试以下操作:

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

请注意在第二行代码中使用-4而不是仅在代码中。4这解释了为什么您的程序试图创建文件名/Use.hack四个字符 ( /Use),.hack并附加到它。

于 2012-05-13T23:00:10.097 回答
12

您没有足够的权限写入根目录。看到文件名前面的斜线了吗?

于 2012-05-13T22:33:03.853 回答
7

当我使用“shutil.copyfile”而不是“shutil.copy”时,这发生在我身上。权限搞砸了。

于 2014-12-03T21:34:37.650 回答
2

我有同样的问题。在我的情况下,用户没有目标目录的写权限。以下命令对我有帮助:

chmod 777 University
于 2019-05-13T06:36:58.833 回答
1

也许您正在尝试打开文件夹with open,请检查一次。

于 2018-05-14T08:59:31.540 回答
1

对我来说,上面没有任何效果。所以我用这个解决方法解决了我的问题。只需检查您是否已在目录文件夹中添加了 SYSTEM。我希望它会帮助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))
于 2018-09-17T11:20:32.167 回答
1

检查您是否在盒子、保管箱等驱动器内实现代码。如果您将尝试实现的文件复制到计算机上的本地文件夹中,您应该能够摆脱错误。

于 2019-12-10T22:44:40.993 回答
0

对我来说,这是一个权限问题。

在该特定文件夹上使用“获取所有权”应用程序。然而,这有时似乎只是暂时的,而不是永久的解决方案。

于 2015-03-10T12:41:05.613 回答
0

仅供参考,我有这个权限错误,因为它试图创建的文件已经被另一个程序打开/使用(是在上次运行脚本时创建的,我用 excel 打开它,然后在尝试时出现权限错误重新创建它)

将其留在这里以防其他人发现它有用,这不是问题的真正解决方案

于 2021-05-06T12:41:35.557 回答
0

我收到此错误是因为该目录尚不存在。

解决方法:创建目录

import os
if not os.path.exists(directory):
    os.makedirs(directory)
于 2022-01-27T19:47:37.573 回答