![](/img/trans.png)
[英]python Pyinstaller IOError: [Errno 13] Permission denied
[英]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.