Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从QPlainTextEdit读取大量文本_Python_Qt_Pyqt_Pyqt4_Qplaintextedit - Fatal编程技术网

Python 从QPlainTextEdit读取大量文本

Python 从QPlainTextEdit读取大量文本,python,qt,pyqt,pyqt4,qplaintextedit,Python,Qt,Pyqt,Pyqt4,Qplaintextedit,我正在试验QPlaintextedit小部件作为文本编辑器,到目前为止,它工作得很好,使用它我可以键入大量文本,并且UI不会冻结或结巴。 我想我会突破界限,看看会发生什么 基本要点是,我可以使用编辑器编写伪代码,然后分析代码中的错误。如果没有错误,解析将根据输入文本输出一些xml。最后,我得到了一个很好的xml文档来描述文本。实际上,我已经成功地将伪代码转换为xml文件 这相当不错,但是编辑器中的文本越多,它使用的内存就越多。 现在我设法将大约750k行文本粘贴到编辑器中,当需要解析它时,我首先

我正在试验QPlaintextedit小部件作为文本编辑器,到目前为止,它工作得很好,使用它我可以键入大量文本,并且UI不会冻结或结巴。 我想我会突破界限,看看会发生什么

基本要点是,我可以使用编辑器编写伪代码,然后分析代码中的错误。如果没有错误,解析将根据输入文本输出一些xml。最后,我得到了一个很好的xml文档来描述文本。实际上,我已经成功地将伪代码转换为xml文件

这相当不错,但是编辑器中的文本越多,它使用的内存就越多。 现在我设法将大约750k行文本粘贴到编辑器中,当需要解析它时,我首先读取文本,然后将整个文本发送到解析器。为此,我要:

editor_text=QPlainTextEdit.toPlainText()
这将为我提供编辑器中的所有文本,我可以将这些文本发送到解析器,然后将其转换为xml文件(如果没有发现错误)

现在编辑器中有750k行文本,toPlainText()方法工作得不太好,事实上我只是内存不足

我的问题是我应该如何处理大量的文本来解析它

我考虑过(没有尝试过)的一件事是逐块(或逐行)读取文本,解析每一行并将其转换为xml,但我仍然必须处理返回的xml,将每一行/块的结果xml保留在内存中,直到解析完整个编辑器文本,否则可能仍然会耗尽内存

我无法想象这仅仅与QPlainTextEdit小部件有关,但一般来说,当一个文件中有大量“代码”/文本(比如1M,甚至10M行“代码”)时,如何读取和解析所有10M行


例如,我在Windows上使用Python2.7和pyqt4.8

您是否尝试过使用游标以较小的块读取它?也许如果你每次读10k或100k行,它会工作。如果你不尝试解析它,它会崩溃吗?这只是假设吗?你为什么要加载这么多的文本?代码文件通常只有几百kb,很少超过几mb。就我个人而言,我不会浪费任何精力去解决这个“问题”。@ekhumoro,是的,我试得很好,因为我可以,通常我看不到这种情况发生的太多,但我可以复制粘贴,所以我做了,我做了,直到有东西坏了,所以我想我需要一种看待问题的一般方法。它主要是假设性的,但如果有人有一个聪明的想法,我很乐意阅读它,也许可以尝试一下。Thanks@user595985. 你的问题不清楚你到底在问什么。我在这里看到的唯一真正具体的问题是,调用
toPlainText()
会导致内存不足错误。如果是真的,那似乎是Qt中的一个bug。在这种情况下,您应该提供一个示例来演示问题,以便其他人可以尝试重现它。