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"

コードの2行目-4だけではなく、を使用していることに注意してください。これは、プログラムがファイル名()の最初の44文字に追加されたを作成しようとしている理由を説明しています。/Use.hack/Use.hack

于 2012-05-13T23:00:10.097 に答える
12

ルート ディレクトリに書き込むための十分な権限がありません。ファイル名の先頭のスラッシュが見えますか?

于 2012-05-13T22:33:03.853 に答える
1

ボックス、ドロップボックスなどの可能性のあるドライブ内にコードを実装しているかどうかを確認してください。実装しようとしているファイルをマシンのローカル フォルダーにコピーすると、エラーを取り除くことができるはずです。

于 2019-12-10T22:44:40.993 に答える
0

私にとって、これは権限の問題でした。

その特定のフォルダーで「所有権の取得」アプリケーションを使用します。ただし、これは一時的にしか機能しない場合があり、永続的な解決策ではありません。

于 2015-03-10T12:41:05.613 に答える