程序从HTML文件中复制特定行;某些线条没有可见的图案打破它?

时间:2017-05-18 02:43:53

标签: python html debugging

我用Python编写了一个程序来从HTML文件('input')中的特定元素中获取文本,并将其全部写入另一个文档('output')。该程序通过搜索所需类型的所有元素之前的特定HTML标记,然后编写下一行来工作。这是代码,概括:

input = open(filepath, 'r')
output = open(filepath2, 'w')
collect = 0
onstring = "string to be searched for"

for i in range(numberOfLines):
    line = input.readline()
    if onstring in line:
        collect = 1
    elif collect == 1:
        output.write(line)
        collect = 0

我怀疑它是最佳的,但除了一个挂断之外它的功能正常:对于每个HTML文件我尝试这个,在应该复制的最后一个元素的5到15之间完全切断。似乎没有什么模式可以切断多少,所以我想知道是否有更多经验丰富的Python可以指出一个明显的缺陷。

如果有帮助,我测试了一些东西:

  • 如果我附加两个HTML文件,那么相同数量的帖子将被切断,因为它们仅与第二个文件截断。
  • 如果我删除了被复制的最后一个元素,那么在正常复制后会删除更多的元素,但通常会在以后删除一些帖子,这表明复制的特定元素是造成此问题的原因。但是,没有明显的模式可以“打破”这个项目。

2 个答案:

答案 0 :(得分:0)

我通过使用output.close()正确关闭文件解决了这个问题。

归功于詹姆斯的有用评论。

  

如果没有,您可能在内存缓冲区中留下了从未写过的内容   写入磁盘。尝试使用output.close()

答案 1 :(得分:0)

扩展我的评论。您已打开文件进行写入,但每次写入操作都不会直接进入磁盘。相反,它被发送到写缓冲区;当缓冲区填满时,缓冲区中的所有写操作都将写入物理磁盘。关闭文件会强制写入缓冲区中的任何写操作。

由于程序在不关闭文件的情况下退出,因此内存缓冲区中的写入内容从未写入磁盘。尝试使用:

output.close()