Python中read,readline,readlines的区别

1. 区别

在python中,我们使用open函数打开普通文件并创建了file对象,接着读取file对象有三种常用的方法:read(),readline(),readlines()。下面列出了用于读取file对象的函数read、readline、readlines区别:

  • 从文件读取指定的字节数,size如果未给定或为负则读取所有。
file.read([size])
  • 读取整行,包括”\n”字符
file.readline([size])
  • 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行。 实际读取值可能比sizeint较大,因为需要填充缓冲区。
file.readlines([sizeint])

2. 实例

现在我们有1个文件1.py

import sys

a = int(sys.argv[1])           
b = int(sys.argv[2])           

for i in range(a, b+1):       
    for j in range(2, i+1):   
        if i%j==0 and j<i:    
            print(i, '非素数')   
            break             
        elif j==i:             
            print(i, '素数')     
  • read

read([size])从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止。它的返回是字符串对象。

with open('1.py', 'r') as f:
    print(type(f.read()))
    print()
    print(f.read())

'''输出
<type 'str'> 

import sys

a = int(sys.argv[1])           
b = int(sys.argv[2])           

for i in range(a, b+1):        
    for j in range(2, i+1):    
        if i%j==0 and j<i:     
            print(i,'非素数')   
            break              
        elif j==i:            
            print(i,'素数')     
'''

read读取文件的所有行,并原样返回文件行内容。

  • readline

从字面意思可以看出,readline每次读取一行内容,所以读取时占用内存小,比较适合大文件。readline返回一个字符串对象。

with open('1.py', 'r') as f:
    print(type(f.readline()))
    print()
    print(f.readline())

'''输出
<type 'str'>

import sys
'''

readline读取文件的一行,并原样返回一行内容。

  • readlines

readlines读取文件的所有行,保存在一个列表(list)变量中。每1个文件行作为一个list元素,但读取大文件会比较占内存。

with open('1.py', 'r') as f:
    print(type(f.readlines()))
    print()
    print(f.readlines())

'''输出
<type 'list'>

['import sys\n', '\n', 'a = int(sys.argv[1])\n', 'b = int(sys.argv[2])\n', '\n', 'for i in range(a, b+1):     \n', '    for j in range(2, i+1):\n', '        if i%j==0 and j<i:\n', "            print(i,'非素数')\n", '            break\n', '        elif j==i:\n', "            print(i,'素数')\n"]
'''

readlines返回一个list,其中每一个文件行是一个字符串元素。

  • linecache模块

当然若有特殊需求,还可以用linecache模块,比如你要输出某个文件的第n行:

import linecache 

text = linecache.getline(‘1.py', 3)
print(text)

# 输出第3行
# a = int(sys.argv[1])          

linecache读取大文件de效率还可以。

3. 参考文章

http://www.jb51.net/article/119907.htm
http://www.jb51.net/article/124355.htm

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值