乐趣区

关于python:大话-Pythonpython-基础巩固-文件-IO-与-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','','rn' 来自定义换行
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()

更多精彩返回微信公众号【Python 集中营】,专一后端编程实战,原创文章每天更新!

退出移动版