首页新闻找找看学习计划

python中对文件的操作

-1
悬赏园豆:120 [待解决问题]

filename='learning_python.txt'
with open(filename) as file_object:
----contents=file_object.read() 打开整个文件
----print(contents)
----for line in file_object: 逐行读取文件中的内容并打印
--------print(line)
----lis=file_object.readlines() 逐行读取文件中的内容并储存为列表
for line in lis:
print(line.strip())

我想用如上的方式分别打开文件,为什么只打印了一次文件内容呢?
在每个方式增加一行:with open(filename) as file_object:
filename='learning_python.txt'
with open(filename) as file_object:
----contents=file_object.read() 打开整个文件
----print(contents)

with open(filename) as file_object:
----for line in file_object: 逐行读取文件中的内容并打印
--------print(line)
with open(filename) as file_object:
----lis=file_object.readlines() 逐行读取文件中的内容并储存为列表
for line in lis:
----print(line.strip())

就可以打印三次 这又是为什么呢???
求大神解答~~

python小白222的主页 python小白222 | 初学一级 | 园豆:82
提问于:2019-02-03 18:11
< >
分享
所有回答(1)
2

因为你第一次读取文件,读到了文件尾部,file_object这个文件对象内有一个指针,指向当前读到哪里,你读到了尾部,后面再读取,肯定是没有数据了。

而后面的代码则是重新打开了文件,所以又重头开始读取,所以会有三次打印。

这个文件对象的指针是可以设置的,可以使用file_object.seek(0, 0)重新设置读取指针到头部。具体用法参见:http://www.runoob.com/python/file-seek.html

Feather·Lee | 园豆:104 (初学一级) | 2019-02-03 21:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册