鱼C论坛

 找回密码
 立即注册
查看: 1160|回复: 2

[已解决]【视频28】关于文件换行输出的效率问题

[复制链接]
发表于 2017-11-16 12:42:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在视频28中介绍了打开和读写文件的基础方式。
其中末尾写了关于文件换行输出的两种实现方式,第一种是:
lines =list(f)
for each_line in lines:
    print(each_line)

第二种是:
f.seek(0,0)
for each_line in f:
    print(each_line)

小甲鱼老师说:第二种更高效。
不过我还不太了解问什么,可以再解答一下吗,谢谢!

另外还有一个问题,就是for each_line in lines: 是如何实现识别换行符的。
我记得之前讲字符串的时候,for语句是将lines里面的每一个元素读取出来,然后print打印完一个元素之后就换行。
但是上述两种方式为什么碰到‘\n’才换行呢,不是很懂啊。
最佳答案
2017-11-16 12:54:33
第二种直接用文件操作的内置函数,当然快一些
而第一种需要用list对文件内容进行转换,所以速度慢一些

for each_line in lines   这里没有识别换行符,因为lines此时已经是一个列表,每个元素就是一行,直接取每一个元素就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-16 12:54:33 | 显示全部楼层    本楼为最佳答案   
第二种直接用文件操作的内置函数,当然快一些
而第一种需要用list对文件内容进行转换,所以速度慢一些

for each_line in lines   这里没有识别换行符,因为lines此时已经是一个列表,每个元素就是一行,直接取每一个元素就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-16 18:03:37 | 显示全部楼层
BngThea 发表于 2017-11-16 12:54
第二种直接用文件操作的内置函数,当然快一些
而第一种需要用list对文件内容进行转换,所以速度慢一些

>>> f= open('F:\\Python-Ex\\readme.txt',encoding='UTF-8')
>>> f.tell()
0
>>> lines = list(f)
>>> lines
['内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。\n', '内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。\n', '随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。例如服务器应用软件,需要长时间的运行,不断的处理由客户端发来的请求,如果没有有效的内存管理,每处理一次请求信息就有一定的内存泄漏。这样不仅影响到服务器的性能,还可能造成整个系统的崩溃。因此,内存管理成为软件设计开发人员在设计中考虑的主要方面[1]  。']
>>> lines[0]
'内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。\n'
>>> lines[1]
'内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。\n'
>>> lines[2]
'随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。例如服务器应用软件,需要长时间的运行,不断的处理由客户端发来的请求,如果没有有效的内存管理,每处理一次请求信息就有一定的内存泄漏。这样不仅影响到服务器的性能,还可能造成整个系统的崩溃。因此,内存管理成为软件设计开发人员在设计中考虑的主要方面[1]  。'

刚才试了一个实际例子,列表的每个元素都是从文本里面截取\n为止的一段文字呢,这就是我还没搞明白的地方。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 09:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表