类型错误:强制转换为Unicode:需要字符串或缓冲区,找到类型

2024-04-29 16:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个代码来读取一个文件并对其进行一些操作。

代码:

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 id是我要读取的文件,所有模块都在同一个库中,包括.asm文件。


Tags: 文件代码fromimportparsermyparserinputcode
2条回答

File "C:\Python27\lib\ntpath.py", line 488, in abspath path = _getfullpathname(path) TypeError: coercing to Unicode: need string or buffer, builtin_function_or_method found

你有很多问题。

首先,你的压痕不一致。这意味着导入被视为assem函数的一部分,但其他都不是。从字面上讲,关于Python,您首先要知道的是缩进是非常重要的。

其次,使用内置函数名file作为变量名。别那么做。

第三,实际上并不调用assem函数。但是由于第一个问题,第一个未缩进的行在启动时执行。因此,当到达input = open(file, 'r')行时,file仍然引用内置函数,而不是变量(此时未定义)。

最后,虽然这实际上并没有引起您的问题,但您不需要同时执行import myParserfrom myParser import Parser。选一个。

相关问题 更多 >