我目前正在尝试将一个旧的python应用程序移植到版本3。在此过程中,应用程序现在在尝试将数据输出到文本文件时崩溃:
parser.py, line 110
AttributeError("'HTMLPlusParser' object has no attribute 'rawdata'",),None)
我不太清楚如何为这种特殊情况创建一个MVC示例,下面是relivent代码:
HTMLPlus.py
class HTMLPlusParser(HTMLParser):
def __init__(self, formatter, verbose = None):
if verbose and not hasattr(verbose, "write"):
verbose = sys.stderr
HTMLParser.__init__(self, formatter, verbose)
self.reparsestack = []
self.tdelt = []
ReportWindow.py
def parseConfigReport(self, filename, scxmldoc):
source = etree.fromstring(scxmldoc.toxml())
try:
xslt_xml = etree.parse(filename)
transform = etree.XSLT(xslt_xml)
report = transform(source)
self.reportHtml = str(report)
def saveToText(self):
filename = os.path.join(self.parent.ReportPath, str(self.parent.CharName.text()) + "_report.txt")
filename, filters = QFileDialog.getSaveFileName(self, "Save Report", filename, "Text (*.txt);;All Files (*.*)")
if filename is not None and str(filename) != '':
try:
if re.compile('\.txt$').search(str(filename)) is None:
filename = str(filename)
filename += '.txt'
f = open(str(filename), 'w')
w = DimWriter(f)
s = ObtuseFormatter(w)
p = HTMLPlusParser(s)
p.feed(self.reportHtml)
p.close()
w.flush()
f.close()
self.parent.ReportPath = os.path.dirname(os.path.abspath(str(filename)))
except IOError:
QMessageBox.critical(None, 'Error!', 'Error writing to file: ' + filename, 'OK')
def handle_data(self, data):
if len(self.reparsestack):
self.reparsestack[-1].append((getattr(self, 'handle_data'), data,))
HTMLParser.handle_data(self, data)
def handle_starttag(self, tag, method, attrs):
if self.reparsestack:
self.reparsestack[-1].append((method, attrs,))
HTMLParser.handle_starttag(self, tag, method, attrs)
def handle_endtag(self, tag, method):
if self.tdelt:
self.tdelt[-1].append((method,))
HTMLParser.handle_endtag(self, tag, method)
我是python新手,这不是我的应用程序(开源),而且我在将数据输出到文件方面没有太多经验。你知道吗
说到这里,我真的不明白为什么我会崩溃,特别是在一个属于库的文件中,我不知道我需要做什么来修复这个问题。你知道吗
我试过改变:
HTMLParser.__init__(self, formatter, verbose) --> HTMLParser.__init__(self)
正如在另一个线程中所建议的那样,但这不起作用。我不知道接下来该怎么办。有什么想法吗?你知道吗
我知道格式化程序被贬低了。。不知道用什么来代替它。如果这是我自己的代码,这可能会更容易。你知道吗
更新:
将HTMLPlus init从if语句中移出允许我推过此异常,但导致了另一个异常
TypeError("handle_starttag() missing 1 required positional argument: 'attrs'",) in parse_starttag.parser.py:345
这个异常同样发生在库文件中分析器.py这些变量似乎是在那个文件中分配的。你知道吗
更新2:
我知道htmlib现在html.parser语法分析器. 从Python2.x到Python3.x,这是我需要做的一个更改。考虑到这个更改,API中是否有更改?我似乎找不到任何文献表明这一点,而且这在2to3转化之前就起作用了。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐