3

ファイルを読み取って操作を行うコードを作成しようとしています。

コード:

def assem(file):
    import myParser
    from myParser import Parser
    import code
    import symboleTable
    from symboleTable import SymboleTable


newFile = "Prog.hack"
output = open(newFile, 'w')
input = open(file, 'r')


prsr=Parser(input)
while prsr.hasMoreCommands():
      str = "BLANK"
      if(parser.commandType() == Parser.C_COMMAND):
      str="111"+code.comp(prsr.comp())+code.dest(prsr.dest())+code.jump(prsr.jump())+"\n"

output.write(str)
prsr.advance()

私が得るエラー:

Traceback (most recent call last):
  File "assembler.py", line 11, in <module>
    input = open(file, 'r')
TypeError: coercing to Unicode: need string or buffer, type found

プログラムの実行方法:

   python assembler.py Add.asm

ここで、Add.asm は読み取りたいファイルです。.asm ファイルを含むすべてのモジュールは同じライブラリにあります。

4

2 に答える 2

8

複数の問題があります。

まず、インデントに一貫性がありません。つまり、インポートはassem関数の一部と見なされますが、他には何もありません。文字通り、Python について最初に知っておくべきことは、インデントが重要だということです。

file次に、変数の名前に組み込み関数名 を使用しています。そうしないでください。

第三に、実際には関数を呼び出しませんassem。しかし、最初の問題により、最初のインデントされていない行が起動時に実行されます。そのため、行input = open(file, 'r')に到達しfileても、変数ではなく組み込み関数を参照します (この時点では定義されていません)。

最後に、これが実際に問題を引き起こしているわけではありませんが、 と の両方を行う必要はありませimport myParserfrom myParser import Parser。一つを選ぶ。

于 2012-04-24T19:43:03.890 に答える
-1

ファイル "C:\Python27\lib\ntpath.py"、488 行目、abspath パス = _getfullpathname(path) TypeError: Unicode への強制: 文字列またはバッファーが必要、builtin_function_or_method が見つかりました

于 2016-11-25T05:16:45.373 に答える