我试图在同一时间100线读取从网站的源代码
例如:
self.code = urllib.request.urlopen(uri)
#Get 100 first lines
self.lines = self.getLines()
...
#Get 100 next lines
self.lines = self.getLines()
我getLines代码是这样的:
def getLines(self):
res = []
i = 0
while i < 100:
res.append(str(self.code.readline()))
i+=1
return res
但问题是, getLines()
始终返回的前100行的代码。
我已经看到了一些解决方案next()
或tell()
和seek()
但似乎这些功能都没有在类HTTPResponse类中实现。
根据文档 urllib.request.urlopen(uri)
返回类似对象的文件,所以你应该能够做到:
from itertools import islice
def getLines(self)
res = []
for line in islice(self.code,100):
res.append(line)
return res
还有更多的信息islice
中itertools文档 。 使用迭代器将避免while
环和手动增量。
如果你绝对必须使用readline()
这是建议使用for
循环,即
for i in xrange(100):
...
这为我工作。
#!/usr/bin/env python
import urllib
def getLines(code):
res = []
i = 0
while i < 100:
res.append(str(code.readline()))
i+=1
return res
uri='http://www.google.com/'
code = urllib.urlopen(uri)
#Get 100 first lines
lines = getLines(code)
print lines
#Get 100 next lines
lines = getLines(code)
print lines