关于迭代访问文件的问题

sanyawa 2018-04-12 04:04:50
A段:
f=open(‘/etc/mod’,r‘’)
alllines=[x.strip() for x in f.readlines()]

B段:
f=open(‘/etc/mod’,r‘’)
alllines=[len(x.strip()) for x in f]


也就是说我想问 for x in f.readlines() 和 for x in f 代码含义相同吗?
请问B段中的 x in f 中 x 能代表一行吗,如果是这样的话,那么readlines() 方法基本没啥用,多余一个方法。
...全文
891 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
简明教程 2018-06-13
  • 打赏
  • 举报
回复
引用 5 楼 xpresslink 的回复:
[quote=引用 2 楼 qq_36016297 的回复:] readlines是以没行为单位,分割数据成一个列表,f 是一个文件资源对象,不能直接进行遍历。参考 - Python文件读写
又碰上了,这个也是你发的吧? https://www.v2ex.com/t/462044#reply45[/quote] 多元化发展,哈哈哈
混沌鳄鱼 2018-06-13
  • 打赏
  • 举报
回复
引用 2 楼 qq_36016297 的回复:
readlines是以没行为单位,分割数据成一个列表,f 是一个文件资源对象,不能直接进行遍历。参考 - Python文件读写
又碰上了,这个也是你发的吧? https://www.v2ex.com/t/462044#reply45
混沌鳄鱼 2018-06-13
  • 打赏
  • 举报
回复
引用 2 楼 qq_36016297 的回复:
readlines是以没行为单位,分割数据成一个列表,f 是一个文件资源对象,不能直接进行遍历。参考 - Python文件读写
可以的,不信你自己做一下实验。
混沌鳄鱼 2018-06-13
  • 打赏
  • 举报
回复
在你要处理的文件比较小的情况下这两个写法什么差别。 主要的区别是: readlines方法把文件直接全部加载到内存里的一个list对象中,一行一个元素。 方法二在文本模式打开文件的情况下是一行一行从文件中把数据读入内存的,因此可以读一行处理一行可以占用比较小的内存。 当文件容量大于可用内存时,只能用第二个方法。
简明教程 2018-06-13
  • 打赏
  • 举报
回复
readlines是以没行为单位,分割数据成一个列表,f 是一个文件资源对象,不能直接进行遍历。参考 - Python文件读写
Jensen_LV 2018-04-12
  • 打赏
  • 举报
回复
不能代表一行,但你那样写的结果是一样的,一行一行的 读出来和全部读出来遍历的效果是相同的

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧