8个回答
展开全部
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没有关系的
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方法,它们实际上将整个文件内容读取到内存中,虽然你也可以逐行输出,但是你也可以跳着输出的(列表)。而你的这种方法-迭代器是不能直接跨行输出的,也就是说,你每次真的只从文件中读了一行,并且必须逐行读取,因为每次只读一行,所以占用内存极少,推荐的使用方法。
追问
我想问下为什么结果不是一个字符一个字符的输出?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得要逐行的话最好这样写:
for line in fo.readlines():
至于为什么直接fo可以迭代出每行,应该是open函数返回值的内部实现和返回值类型决定的(应该在c代码里,直接转open定义看不见实现细节)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fp = open(filename,'r')
print(list(fp))
## 或者
fp = open(filename,'r')
print(next(fp))
你看看这两个结果就知道fp到底是什么东西了。这说明fp就是按行迭代的,这可能有点反直觉。不过既然python就是这么定义的,那也没办法。如果想按照字符迭代,还是先用str = fp.read()吧。
print(list(fp))
## 或者
fp = open(filename,'r')
print(next(fp))
你看看这两个结果就知道fp到底是什么东西了。这说明fp就是按行迭代的,这可能有点反直觉。不过既然python就是这么定义的,那也没办法。如果想按照字符迭代,还是先用str = fp.read()吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读取文本文件时,python将其中的所有文本都解读为字符串。
也可创建一个包含文件各行内容的列表,然后再对存储在列表中的文件的内容进行操作。
这种方法是第二种文件迭代器的方法
也可创建一个包含文件各行内容的列表,然后再对存储在列表中的文件的内容进行操作。
这种方法是第二种文件迭代器的方法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询