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