python文件操作

为什么说这个是逐行遍历?这个不是一个元素一个元素的遍历吗?python3版本... 为什么说这个是逐行遍历?这个不是一个元素一个元素的遍历吗?
python3版本
展开
 我来答
奇奇怪怪知识杂货铺
2018-08-14 · TA获得超过750个赞
知道小有建树答主
回答量:455
采纳率:0%
帮助的人:215万
展开全部
python 3.4 manual:
There are actually three categories of file objects: raw binary files, buffered binary files and text files. Their interfaces are defined in
the io module. The canonical way to create a file object is by using the open() function.
大概意思就是open()函数返回的文件对象类型有三种,你的fo就是带有读取数据的其中一种文件类型,个人觉得是逐行遍历,其实你理解成一个一个元素也没有逻辑上的问题,因为fo就包含了读取文件后所有的数据,在文件操作中有Readlines和ReadLine的方法,读取所有行和读取单行的不同效用,与循环中的循环变量:line,i,x没有关系的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-08-16
展开全部
这是使用迭代器的方法读取文件内容,这种方法的好处是占用内存空间较少。如果你使用readlines,read方法,它们实际上将整个文件内容读取到内存中,虽然你也可以逐行输出,但是你也可以跳着输出的(列表)。而你的这种方法-迭代器是不能直接跨行输出的,也就是说,你每次真的只从文件中读了一行,并且必须逐行读取,因为每次只读一行,所以占用内存极少,推荐的使用方法。
追问
我想问下为什么结果不是一个字符一个字符的输出?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2018-08-14 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7667万
展开全部

我觉得要逐行的话最好这样写:

for line in fo.readlines():

至于为什么直接fo可以迭代出每行,应该是open函数返回值的内部实现和返回值类型决定的(应该在c代码里,直接转open定义看不见实现细节)。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
物理学势力
2018-08-14 · TA获得超过119个赞
知道小有建树答主
回答量:117
采纳率:64%
帮助的人:26.9万
展开全部
fp = open(filename,'r')
print(list(fp))
## 或者
fp = open(filename,'r')
print(next(fp))
你看看这两个结果就知道fp到底是什么东西了。这说明fp就是按行迭代的,这可能有点反直觉。不过既然python就是这么定义的,那也没办法。如果想按照字符迭代,还是先用str = fp.read()吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听雨婷2Y
2018-08-13 · TA获得超过360个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:141万
展开全部
读取文本文件时,python将其中的所有文本都解读为字符串。
也可创建一个包含文件各行内容的列表,然后再对存储在列表中的文件的内容进行操作。
这种方法是第二种文件迭代器的方法
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式