| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1443 人关注过本帖
标题:python3.8.2的read函数的疑问
只看楼主 加入收藏
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
python3.8.2的read函数的疑问
程序代码:
with open("learning_python.txt") as file_object:
    contents=file_object.read()
    print(contents.rstrip())
    
    for line in file_object:
        print(line)

我在运行了2,3行输出文件内容后,再把file_object5,6分行输出,结果什么都输出不了,
然后我判断了下运行了2,3行语句的file_object是空的,难道read()函数读取变量后会将其清空吗,
还是说有什么原因呢?
搜索更多相关主题的帖子: 输出 read python3 函数 疑问 
2020-10-13 09:08
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:243
专家分:2106
注 册:2019-8-16
收藏
得分:18 
以下是引用ke_liu在2020-10-13 09:08:43的发言:


with open("learning_python.txt") as file_object:
    contents=file_object.read()
    print(contents.rstrip())
   
    for line in file_object:
        print(line)

我在运行了2,3行输出文件内容后,再把file_object5,6分行输出,结果什么都输出不了,
然后我判断了下运行了2,3行语句的file_object是空的,难道read()函数读取变量后会将其清空吗,
还是说有什么原因呢?

请使用contents=file_object.readlines()
2020-10-13 09:13
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 2楼 fall_bernana
readlines我后面再用,就是想问一下file_object运行5,6分行输出,为什么什么都输出不了
2020-10-13 09:19
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
收藏
得分:2 
这个不应该是for line in contents吗?
2020-10-13 16:41
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 4楼 古123
也可以那样写,但我现在想知道的不是如何输出文件内容,而是为什么变量file_object执行read()后会被清空?
2020-10-13 19:03
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:243
专家分:2106
注 册:2019-8-16
收藏
得分:0 
以下是引用ke_liu在2020-10-13 09:08:43的发言:


with open("learning_python.txt") as file_object:
    contents=file_object.read()
    print(contents.rstrip())
   
    for line in file_object:
        print(line)

我在运行了2,3行输出文件内容后,再把file_object5,6分行输出,结果什么都输出不了,
然后我判断了下运行了2,3行语句的file_object是空的,难道read()函数读取变量后会将其清空吗,
还是说有什么原因呢?


首先你要理解file_object是指向文件的一个对象。简单来说你可以理解成指向learning_python.txt的一条路。通过read()你可以从这条路获取整个文件信息或者readlines获取一行一行的信息的数组。然后通过file_object.close来关闭这条路。这里只是with帮你做了
所以你用for line in file_object:来获取内容是没用的,他只是条路,不包含数据,不能做别的事情.

[此贴子已经被作者于2020-10-14 10:13编辑过]

2020-10-14 10:10
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 6楼 fall_bernana
它包含数据呀,只是在用read()之后它就没数据了
不使用read():
图片附件: 游客没有浏览图片的权限,请 登录注册

使用read()后:
图片附件: 游客没有浏览图片的权限,请 登录注册


2020-10-14 14:45
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:243
专家分:2106
注 册:2019-8-16
收藏
得分:0 
回复 7楼 ke_liu
https://www.

seek() 方法用于移动文件读取指针到指定位置。
tell():返回文件对象当前所处的位置
当你读取一次后。文件读取指针移到了文件末尾。
如果你想这样再次读取。可以seek(0, 0)重新读取
file_object 是一个io.TextIOWrapper对象,他是个迭代器,实现了__iter__和__next__方法,使用过一次后就没有了。具体可以通过help去查看

[此贴子已经被作者于2020-10-14 15:52编辑过]

2020-10-14 15:09
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 8楼 fall_bernana
谢谢大佬,我懂了,是我对file_object的理解有误
2020-10-14 16:02
快速回复:python3.8.2的read函数的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016848 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved