先上代码:
from sys import argv
script, filename = argv
f = open(filename)
f.seek(6)
print f.readline()
print f.readline()
print f.readline()
然后是txt文件:
12345
abcdef
3333333
44444444
最后是powershell里显示的:
abcdef
3333333
求问为什么读不出最后一行来
如果将seek(6)改成seek(0)就不会出现这种情况
首先说结论。
你的第五行代码的
print f.readline()
打印出了换行符\n
,如果想打印出文本的最后一行,可以有两个方法:加一行
print f.readline()
将
f.seek(6)
中的数值改为7我想说我是如何解决这个问题的。
我复制了你的代码(进行了些微改动),然后运行,你说的情况出现了:没有打印出最后一行。
于是我想知道发生了什么,开始进行一个个排除。
首先,我删除了最后一行代码(第八行的
print f.readline()
),发现打印的内容少了一行。从而确定,不是最后一行没打印文本,而是前面的两个print f.readline()
之一没有打印文本。通过再删除第七行的print f.readline()
确认问题:第六行的代码没有输出想要的文本。其结果如下:就是一行空白。
然后,我开始查看:打印出来的是字符串类型吗?通过
isinstance(..., str)
,确认其为字符串。再然后,我猜想:是不是打印了不可见字符(如换行符换页符等等)。于是通过代码:
将其转换为列表打印出来。得到结果:其打印了一个换行符。
现在问题就可以解决了。如果以后出现这类问题,可以用以下方法解决:
单步调试:这个可以参考教程调试
自己增加或删除代码查看结果
如果都做过了还是无法解决问题,可以把过程发出来,到问答社区(比如这里),大家或许能帮你解决呢~
如果读到这里,你也算是坚强,我也只会说这些了,再见~