Python3- print(readline())返回空行

时间:2017-08-26 12:50:42

标签: python urllib readline

我正在使用以下代码尝试在文件result.txt中找到的字符串后打印8行。该脚本肯定会找到该字符串,但print函数在找到该字符串后返回8个空行,而不是实际行的内容。

request = urllib.request.Request(websiteurl)
response = urllib.request.urlopen(request)
data = response.read()
fw = open('result1.txt', 'w')
fw.write(str(data))
fw.close()
with open('result1.txt', 'r') as f:
        for line in f:
                if 'DeMarco' in line:
                        for _ in range(8):
                                print (f.readline())

2 个答案:

答案 0 :(得分:0)

您的脚本正常运行,但您可以在print函数中添加参数end =''以避免自动添加行尾:

print (f.readline(), end='')

您确定自己的文件内容吗? 有4行和这个内容文件:

0
a DeMarco z
1
2
3
4
5
6
xDeMarcoPaul
A
B
DeMarco
C
D
E
F

这个脚本:

with open('result1.txt', 'r') as f:
  for line in f:
    if 'DeMarco' in line:
      for _ in range(4):
        print (f.readline(), end='')

我有这个输出:

1
2
3
4
A
B
DeMarco
C

但如果在以下8行中还有DeMarco模式,则不会检测到它,因为f.readline()会移动光标。

答案 1 :(得分:0)

只需读取行元组中的响应结果即可。您的代码应如下所示: -

response = urllib.request.urlopen(websiteurl)
data = response.read()
fw = open('result1.txt', 'w')
fw.write(str(data))
fw.close()
lines = tuple(open('result1.txt', 'r'))
for x in lines:
    if 'google' in x:
        for y in range(8):
            print(x)