【发布时间】:2019-01-24 19:57:45
【问题描述】:
我在我的脚本中使用循环将大量 url 写入这样的 txt 文件:
fwrite = open('visited.txt', 'a')
fwrite.write('\n{0}'.format(url))
fwrite.close()
然后当我稍后重新运行时,我不想处理访问过的链接,所以我这样做:(访问是新/旧 url 的列表)
for x in visit:
if x in open('visited.txt').read().lstrip('\r\n'):
visit.remove(x)
else:
continue
但这总是会跳过一半的行。如果有 1000 个 url,它只删除其中的 500 个。尝试了 lstrip/rtsrip 和 \n 和 \r\n 但无法管理它
【问题讨论】:
-
"您正在修改对象
visit的内容,当您执行visit.remove(x)时正在迭代该对象" -- 不要那样做 -
另外,你不应该打开visited.txt文件,每次你想添加一个url时写一行并关闭它。要么使用
with open('visited.txt', 'a') as f: f.write('{0}\n'.format(url)),要么在一个列表中收集所有需要的url并将其写入文件一次。
标签: python