Python中的read(),readline()和readlines的比较

要读取的文件位置:C:/Users/x84106976/Desktop/test1.txt

文件内容:

my name is xiaozhen
my age is 24
today is a sunny day

1. read([size])方法:注意size是可选的

read([size]):从文件中当前位置读取size个字节若没有参数,则表示读取至结束为止,返回为字符串对象(整个读取的内容为一个字符串)

但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理

f = open("C:/Users/x84106976/Desktop/test1.txt", 'r')
lines = f.read()
print lines
print(type(lines))
f.close()

2. readline()方法

readline()和readlines()方法相似,但是.readline()每次只读取一行,通常比 .readlines()慢得多

line不就是行的意思嘛,因为该方法每次读出一行内容,所以,读取时占用内存比较小,比较适合大文件。

注意,仅仅文件内容一次放不下内存的时候,才会使用readline(),其实主要还是它慢

函数返回一个字符串对象

通过readline输出,对于比较大的文件,这种占用内存比较小。
#coding:utf-8
 
f = open('poem.txt','r')
result = list()
for line in open('poem.txt'):
    line = f.readline()
    print line
    result.append(line)
print result
f.close()                
open('result-readline.txt', 'w').write('%s' % '\n'.join(result))

3. readlines()方法

读取整个文件的所有行,保存在一个list变量中,该列表可以由 Python 的 for... in ... 结构进行处理,

每行最为一个元素,但读取大文件的时候比较占用内存

#coding:utf-8
'''cdays-4-exercise-6.py 文件基本操作
    @note: 文件读取写入, 列表排序, 字符串操作
    @see: 字符串各方法可参考help(str)或Python在线文档http://docs.python.org/lib/string-methods.html
'''
 
f = open('C:/Users/x84106976/Desktop/test1.txt', 'r')                   #以读方式打开文件
result = list()
for line in f.readlines():                          #依次读取每行
    line = line.strip()                             #去掉每行头尾空白
    if not len(line) or line.startswith('#'):       #判断是否是空行或注释行
        continue                                    #是的话,跳过不处理
    result.append(line)                             #保存
result.sort()                                       #排序结果
print result
open('cdays-4-result.txt', 'w').write('%s' % '\n'.join(result)) #保存入结果文件

4. 补充:linecache模块

有特殊需求可以使用linecache模块,比如你要输出的是某个文件的第n行。

import linecache
# 注意getline方法的参数,第一是文件位置,第二个是你要获取的行
text = linecache.getline('C:/Users/x84106976/Desktop/test1.txt', 2)
print text

猜你喜欢

转载自blog.csdn.net/Mr_XiaoZ/article/details/81460819