打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
大话 Python:python 基础巩固 -- 文件 I/O 与 File 对象的应用

python 在操作文件 I/O 的时候,有两个非常重要的方面:一个是 open() 函数的掌握、另一个是 File 文件对象的相关函数的掌握。相比其他面向对象语言的文件流的用法是比较简便的,并且提供很多的文件打开模式算是比较优秀了。

1、全局函数 open()

open() 函数的可选参数还是比较多的,一般在读取文件时只使用文件路径、文件打开模式就可以完成大多数的使用场景。使用 open() 函数打开文件后返回的就是一个 File 文件对象,然后使用 File 对象的内部函数实现对文件的操作,需要注意的是在完成文件对象的操作后必须对文件进行关闭。


1open('/usr/load/download/20210320/test.txt',mode='r')

open() 函数的完整的语法格式


1open('/usr/load/download/20210320/test.txt', mode='r', buffering=-1
2encoding=None, errors=None, newline=None, closefd=True, opener=None)

open() 函数完整语法格式的各个可选参数代表什么样的含义


 1file: 必填参数项 -- 文件的打开的路径(支持相对路径和绝对路径)
2mode: 可选参数项 -- 文件打开模式,默认为只读模式
3常见的 mode 参数值的格式
4# 打开模式
5'b':-- 以二进制模式打开
6't':-- 以文本模式打开(缺省模式)
7'+':-- 以读写模式打开
8'U':-- 以通用换行符模式打开
9# 操作模式
10'r':-- 以只读模式打开
11'w':-- 以只写模式打开
12'a':-- 以追加模式打开
13# 组合模式,将打开模式与操作模式进行组合使用,下列为常见组合
14'r+':-- 以文本读写模式打开
15'w+':-- 以文本读写模式打开
16'a+':-- 以文本读写模式打开
17buffering: 可选参数项 -- 设置缓冲,缓冲的设置是为了减少 IO 的使用,一般设置 0(二进制模式关闭缓冲),1(文本模式一行的缓冲),>1(初始化缓冲的大小)
18encoding: 可选参数项 -- 文件编码,一般情况使用 utf-8 编码即可
19errors: 可选参数项 -- 设置报错级别,为 None 时不设置,为 strict 时字符编码出现问题会报错,为 ignore 时忽略编码问题
20newline: 可选参数项 -- 区分换行符,只对文本模式有效,一般情况下可以取值None,'\n','\r','','\r\n' 来自定义换行
21closefd: 可选参数项 -- 传入的file参数类型,为 True 时参数类型表示文件名称,False 时为文件描述符
22opener: 可选参数项 -- 设置自定义开启器,返回值必须是一个打开的文件描述符。
2、File 文件操作对象

  File -> file_obj.write(string)


1# 使用只写的模式打开文件
2file_obj = open("/usr/load/test.txt""w")
3# 定义原始数据
4string = "Python 集中营"
5# 将字符串写入文件
6file_obj.write(string)
7# 关闭文件
8file_obj.close()

  File -> file_obj.tell()

1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3current_data = file_obj.tell()
4print "当前数据位置: ",current_data 

  File -> file_obj.read([size])


1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 读取 5 个字节
6data1 = file_obj.read(5)
7# 读取整个文件
8data2 = file_obj.read(-1)

  File -> file_obj.next()


 1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5for i in range(10):
6    # 读取下一行
7    data_line = file_obj.next()
8    print "第 %d 行 - %s" % (i, data_line)
9# 关闭文件
10file_obj.close()

  File -> file_obj.readline([size])


1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 读取一行的 10 个字节
6data_line1 = file_obj.readline(10)
7# 读取一行
8data_line2 = file_obj.readline()

  File -> file_obj.readlines([size])

 1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# readlines() 函数读取所有行
6# 遍历每行
7for data_line in file_obj.readlines():   
8    # 去除首尾多余的空格                        
9    data_line = data_line.strip()                             
10
11# 关闭文件
12file_obj.close()

  File -> file_obj.flush()


1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 刷新缓冲区
6file_obj.flush()
7# 关闭文件
8file_obj.close()

  File -> file_obj.close()


1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt""rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 关闭文件
6file_obj.close()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python数据存储:pickle模块的使用讲解
Python
Python文件读写
Python中的文件处理
Python中使用pickle持久化对象
拒绝降权!教你用 Python 确保制作的短视频独一无二
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服