gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:22:29 26 4
gpt4 key购买 nike

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

代码:

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 文件。

最佳答案

你有多个问题。

首先,你的缩进不一致。这意味着导入被视为 assem 函数的一部分,但没有别的。从字面上看,关于 Python,您首先要了解的是缩进很重要。

其次,您使用内置函数名称 file 作为变量名称。不要那样做。

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

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

关于python - 类型错误:强制转换为 Unicode:需要字符串或缓冲区,找到类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com