我正在尝试编写一个代码来读取文件并对其进行一些操作。
代码:
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文件。
答案 0 :(得分:8)
你有很多问题。
首先,你的缩进是不一致的。这意味着导入被视为assem
函数的一部分,但没有别的。从字面上看,你必须要了解的关于Python的第一件事是缩进很重要。
其次,您使用内置函数名file
作为变量名称。不要那样做。
第三,你实际上并没有调用assem
函数。但是由于你的第一个问题,第一个未缩进的行在启动时执行。因此,当到达行input = open(file, 'r')
时,file
仍然引用内置函数,而不是您的变量(此时未定义)。
最后,虽然这实际上并没有导致您的问题,但您不需要同时执行import myParser
和from myParser import Parser
。选一个。
答案 1 :(得分:-1)
文件&#34; C:\ Python27 \ lib \ ntpath.py&#34;,第488行,在abspath中 path = _getfullpathname(path)TypeError:强制转换为Unicode:需要字符串或缓冲区,找到builtin_function_or_method