Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-IOError:[Errno 13]权限被拒绝:_Python_File_Io - Fatal编程技术网

Python-IOError:[Errno 13]权限被拒绝:

Python-IOError:[Errno 13]权限被拒绝:,python,file,io,Python,File,Io,我的IOError:[Errno 13]权限被拒绝,我不知道这段代码出了什么问题 我试图读取给定绝对路径的文件(仅表示file.asm) 和相对路径(意思是/…/file.asm),我希望程序将文件写入给定的任何路径-如果是绝对路径,则应将其写入当前目录;否则,返回给定的路径 守则: #call to main function if __name__ == '__main__': assem(sys.argv[1]) import sys def assem(myFile):

我的
IOError:[Errno 13]权限被拒绝
,我不知道这段代码出了什么问题

我试图读取给定绝对路径的文件(仅表示
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
我执行代码的方式:

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

我做错了什么?

您没有足够的权限写入根目录。请参阅文件名的前斜杠?

看起来您正试图用以下代码替换扩展名:

if (myFile[-4:] == ".asm"):
    newFile = myFile[:4]+".hack"
但是,您似乎混淆了数组索引。请尝试以下操作:

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

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

只需关闭要写入的打开文件。当我使用“shutil.copyfile”而不是“shutil.copy”时,这种情况发生在我身上。权限被搞乱了

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

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

也许您正试图用open打开文件夹
,请检查一次。

对于我来说,上面的任何内容都不起作用。所以我用这个变通方法解决了我的问题。只需检查您是否已将系统添加到目录文件夹中。我希望这会对索莫内有所帮助

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

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

chmod 777 University

检查您是否在硬盘盒、dropbox等中实现代码。如果您将要实现的文件复制到计算机上的本地文件夹,则应该能够消除该错误。

FYI出现此权限错误,因为它试图创建的文件已被其他程序打开/使用(是上次运行脚本时创建的,我用excel打开了它,然后在它尝试重新创建时出现权限错误)


如果其他人认为它有用,就把它放在这里,这不是问题的真正解决方案

很可能你没有任务写入根目录-正确地说,我似乎可以做些什么?我将它写入我桌面上的一个简单文件夹,没有什么特别的,只要尝试在开始。正如Len所说。删除路径开头的/是的,你是对的。但现在我得到:IOError:[Errno 2]没有这样的文件或目录:“Users/itzikhanoch/Desktop/University/Add.hack”im使用“w”为什么他要找到任何文件?应该是它写的。现在看起来你传递的是
User/…
,而不是
/User/…
。请注意前导斜杠,这很重要。如果没有前导斜杠,你正试图在子目录中打开一个文件当前目录名为
User
。这个答案对于这个问题毫无意义……这对我来说很有效,这个人的意思是,如果你打开了要保存的文件夹,你需要关闭它“检查一次”是什么意思这不是给用户写权限,而是给系统中的每个人所有权限;读、写和执行。我建议查看用户组和权限,而不是像这样打开文件夹!完全同意。这就是我提到“在我的情况下”的原因有几次。是AWS中Ubuntu EC2上的应用程序需要777权限才能访问特定文件夹。此外,解决方案方法可以从阻止全部或允许全部方法开始,然后进行优化;具体取决于用例。只是想知道这会产生什么影响?我有这个错误,文件位于安装的Google Driv上e(谷歌驱动器文件流)。
chmod 777 University