簡體   English   中英

"Python - IOError:[Errno 13] 權限被拒絕:"

[英]Python - IOError: [Errno 13] Permission denied:

我收到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 

我在這里做錯了什么?

只需關閉要寫入的打開文件即可。

看起來您正在嘗試使用以下代碼替換擴展名:

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

但是,您似乎混淆了數組索引。 請嘗試以下操作:

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

請注意在第二行代碼中使用-4而不是4 這解釋了為什么您的程序試圖創建/Use.hack ,它是文件名 ( /Use ) 的四個字符,並附加.hack

您沒有足夠的權限寫入根目錄。 看到文件名的前導斜杠了嗎?

當我使用 'shutil.copyfile' 而不是 'shutil.copy' 時,這發生在我身上。 權限搞砸了。

也許您正試圖打開的文件夾with open ,檢查一次。

對我來說,上面沒有任何效果。 所以我用這個解決方法解決了我的問題。 只需檢查您是否在目錄文件夾中添加了 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))

我有同樣的問題。 就我而言,用戶沒有目標目錄的寫權限。 以下命令對我有幫助:

chmod 777 University

檢查您是否正在諸如 box、dropbox 等驅動器中實現代碼。如果您將嘗試實現的文件復制到您機器上的本地文件夾中,您應該能夠擺脫錯誤。

對我來說,這是一個權限問題。

在該特定文件夾上使用“取得所有權”應用程序。 然而,這有時似乎只是暫時的,並不是永久的解決方案。

僅供參考我有這個權限錯誤,因為它試圖創建的文件已經被另一個程序打開/使用(上次運行腳本時創建,我用excel打開它,然后在嘗試時遇到權限錯誤重新創建它)

留在這里以防其他人覺得它有用,這不是所問問題的真正解決方案

我收到此錯誤是因為該目錄尚不存在。

解決方法:創建目錄

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM