这个程序,我第一次写是这样的:
1
2
3
4
5
6
|
name
=
input
(
"请输入文件路径:"
)
number
=
int
(
input
(
"请问要打印几行:"
))
f
=
open
(name,
"r"
)
AAA
=
f.readlines()
for
i
in
range
(number):
print
(AAA)
|
非常直观的思路,有什么写什么,从上倒下的写作方式。
后来发现这个程序运行的时候,假如在number的地方输入5,输出结果是把整个文章反复了5遍,而不是打印出前五行。
于是知道这里是.readlines()和.readline()的区别,前者是通篇以一个列表的形式打印出来,比如[line1,line2,...lineN],而后者是只打印第一句话。
更改成.readline()之后,再次启动,选择好文件路径和行数,发现输出结果是打印了5遍文章的第一句话。这回又是什么原因呢?
查了一圈,发现是AAA=f.readline(),这句话不应该放在for...in...外面,放外面的下场就是“先读取整篇文章第一句话”,然后反复重复i次。而调换到for...in...里面的话,就是打印出来整篇文章的前i句话。
正确的程序如下:
1
2
3
4
5
6
|
name
=
input
(
"请输入文件路径:"
)
number
=
int
(
input
(
"请问要打印几行:"
))
f
=
open
(name,
"r"
)
for
i
in
range
(number):
AAA
=
f.readline()
print
(AAA,end
=
" "
)
|
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1728958