[每日一题]9、Python中文件的读取

点击上方Python3X”,选择“置顶或者星标

第一时间收到精彩推送!


Python Every Day, 第 9 天



文件的读写用到了Python的内置函数open()。读取文件的方式有三种


  • read()

  • readline()

  • readlines()

他们都可以传入一个int类型的参数,来限制读取的范围。默认读取全部内容


创建文件的open函数用法:

file = open(file_name, mode='r',encoding=)


file_name:文件路径

mode:打开方式:默认'r',

encoding: 指定打开的编码


常用的打开方式:

  • r:以只读的方式打开文件,文件必须存在

  • r+ :以读写的方式打开文件,文件必须存在

  • w:以写的方式打开文件,文件若存在,则清空内容,从头写入。若不存在自动创建

  • w+:已读写的方式打开文件,文件若存在,则清空内容,从头写入。若不存在自动创建

  • a:已写的方式打开文件,如果存在,则后面追加写入,如果不存在,则创建

  • a+:已读写的方式打开文件,如果存在,则后面追加写入,如果不存在,则创建


read()

一次性读取整个文件,以字符串的形式返回,如果文件过大,会占用较大的内存空间。

创建古诗文件

640?wx_fmt=png

 
 
try:    # 只读模式,utf-8编码打开    file = open('古诗', mode='r', encoding='utf-8')    # 床前明月光,    print(file.read(6)) # 读取前6个字符。如果不填 输入全部except (FileNotFoundError, IOError) as e:    print('文件异常')finally:    file.close()
    # 只读模式,utf-8编码打开
    file = open('古诗', mode='r', encoding='utf-8')
    # 床前明月光,
    print(file.read(6)) # 读取前6个字符。如果不填 输入全部
except (FileNotFoundError, IOError) as e:
    print('文件异常')
finally:
    file.close()


上述代码是一种相对比较low的写法,因为每次读取文件都要关闭文件。这样做是为了操作文件占用的操作系统资源。所以一般读写文件都不这样写,而是通过with open..as..的形式去完成。

如下:

 
 
with open('text', 'r', encoding='utf-8') as file:    """    床前明月光,    疑是地上霜。    举头望明月,    低头思故乡。    """    print(file.read())'text''r', encoding='utf-8'as file:
    """
    床前明月光,
    疑是地上霜。
    举头望明月,
    低头思故乡。
    """

    print(file.read())


readline()

按行读取文件,读取大文件的时候因为一次只读一行数据,所以不会占用较大内存。

 
 
with open('text', 'r', encoding='utf-8') as file:    while 1:        line = file.readline()        if not line:            break        # readline() 每读取一行内容会有个换行符。        # print(line.strip())        print(line.replace('\n', ''))'text''r', encoding='utf-8'as file:
    while 1:
        line = file.readline()
        if not line:
            break
        # readline() 每读取一行内容会有个换行符。
        # print(line.strip())
        print(line.replace('\n'''))



readlines()


一次读取所有文件内容,返回列表,列表中的每个元素 代表每一行的内容。


 
 
with open('古诗', 'r', encoding='utf-8') as file:    lines = file.readlines()    # ['床前明月光,\n', '疑是地上霜。\n', '举头望明月,\n', '低头思故乡。']    print(lines)    for i in lines:        print(i.strip())'古诗''r', encoding='utf-8'as file:
    lines = file.readlines()
    # ['床前明月光,\n', '疑是地上霜。\n', '举头望明月,\n', '低头思故乡。']
    print(lines)
    for i in lines:
        print(i.strip())



往期Python Every Day


[每日一题]8、Python中的深拷贝和浅拷贝

[每日一题]7、Python中的super()函数

 [每日一题]6、Python中的可变参数

[每日一题]5、Python中的lambda表达式

[每日一题]4、Python中的迭代器

[每日一题]3、Python实现删除list中重复元素的几种方式

[每日一题]2、Python中的类的定义和装饰器@classmethod与@staticmethod

[每日一题] 1、Python中的可变对象与不可变对象


640?



感谢您的阅读


640?wx_fmt=gif


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值