当前位置: 首页>后端>正文

大话 Python:python 基础巩固 -- 文件 IO 与 File 对象的应用

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

前往 >>?【阅读原文】

1、全局函数 open()

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

open('/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

5foriinrange(10):

6#?读取下一行

7data_line?=?file_obj.next()

8print"第?%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#?遍历每行

7fordata_lineinfile_obj.readlines():

8#?去除首尾多余的空格????????????????????????

9data_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()


https://www.xamrdz.com/backend/3x61885213.html

相关文章: