【python】(十二)python内置库——文件处理

本文详细介绍了Python中的IO操作,包括文件的打开、读写模式、API使用以及读操作的方法,如read()、readline()和readlines()。强调了忘记关闭文件的危害,并推荐使用with语句自动管理文件关闭。此外,还讲解了文件操作中的编码和错误处理策略。


1. IO操作

在这里插入图片描述

  • IO:在计算机里面指流的输入和输出。这里的输入和输出是相对于电脑内存来说的。
  • 输入:输入是指数据从磁盘或者网络流入内存的一个过程。
  • 输出:输出是指数据从内存流出外部网络或者磁盘的一个过程。

1.1 文件操作步骤

  1. 打开文件
  2. 操作文件:读/写/追加内容
  3. 关闭文件(读写完成要及时关闭文件,不关闭会对内存有很大的消耗)

1.2 文件操作API

1.2.1 打开方法

1.2.1.1 open()
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
#必填参数:file
#重要参数: mode、encoding
  1. file必填参数,要打开的文件的路径,相对路径、绝对路径都可。

  2. mode重要参数,读取模式,默认值:rt。通过读取模式来定义对文件读取方式。

  3. buffering:缓冲区大小。

    • 0关闭缓冲区,只有在二进制模式下才可用;
    • 1:遇到换行符后则写磁盘(只有在文本模式下才生效);
    • 大于1:设置固定大小的缓冲区;
    • 未指定buffering参数值的话:
      • “交互式”文本文件使用行缓冲。其他文件模式参考二进制的方式。
      • 二进制文件,缓冲区大小固定。缓冲区的大小根据基础设备的大小来设定。多数系统中使用的是4096个字节或者8912字节。

    数据不是实时去写入磁盘的,一般先放置在缓冲区中,等到缓冲区满后再集中写入磁盘中。

  4. encoding:重要参数,操作文件时的编码格式。如果文件中存在中文,就需要设置一个编码格式。

  5. errors:遇到编码或解码错误的时候,是忽略还是抛出异常。

  6. newline:换行符,用于控制换行符。指定换行符是\r、\n还是\r\n。

  7. closefd:文件描述符。使用很少,了解即可。

注意:此处展示的python3中的方法,python2与python3有不同。

1.2.1.2 文件读写模式
文件打开模式描述
r以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错。
w
以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建。
a以只追加可写模式打开文件夹,并将文件指针指向文件胃部;如果文件不存在则创建
r+在r的基础上增加可写功能
w+在w的基础上增加可读工能
a+
在a的基础上增加可读功能
b读写二进制文件(默认t,表示文本),需要与上面几种模式搭配使用,如:ab,wb,ab+(POSIX系统,包括Linux都会忽略该字符)

1.2.2 读操作

方法描述
read()一次读取文件所有内容,返回一个str
read(size)每次最多读取指定长度的内容,返回一个str;
Python2中size指定的是字节长度,在python3中size指定的是字符长度
readlines()一次杜宇文件所有内容,按行返回一个list
readline()每次只读取一行内容
1.2.2.1 read()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:读取文件中内容
print(f.read())

#第三步:关闭文件
f.close()

"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
"""
1.2.2.2 read(size)
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:读取文件
print(f.read(7))

#第三步:关闭文件
f.close()

"""
打印结果:
Hello P
"""

#注意:换行、空格也会占字符
1.2.2.3 readlines()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:读取文件
print(f.readlines())

#第三步:关闭文件
f.close()

"""
打印结果:
['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
"""
#示例1:
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:读取文件
print(f.read())
print(f.readlines())

#第三步:关闭文件
f.close()

"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
[]
"""

#注意:readlines返回的是空列表,是因为,read()操作的时候已经将文件中的内容读取完,此时游标移动到最后一行,这时在readline的时候读取到的是空的。
#示例2:
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:读取文件
print(f.read())

#设置游标位置
f.seek(0)
print(f.readlines())

#第三步:关闭文件
f.close()

"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
"""
# 设置游标位置后,readlines()返回的不是空列表
1.2.2.4 readline()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')

#第二步:按行读取文件
print(f.readline())
print(f.readline())

#第三步:关闭文件
f.close()

"""
打印结果:
Hello Python!

Hello Stanger!
"""
#注意:readline()会有一个换行,print会有一个换行,因此打印读取内容后,会出现两个换行。

1.3 忘记关闭文件的危害

  • 打开文件达到一定数量,将会导致打开失败。
  • 占用内存空间,非常浪费资源。
  • 会导致系统自动回收资源,而丢失数据。

1.4 With用法

with open('data.txt','r',encoding='UTF-8') as f:
    print(f.read())
print(f.close())


"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
None
"""

#使用with用法,文件用完后自动关闭。

1.5 总结

  • 使用with方法,会自动完成文件关闭操作。
  • 通过python封装的API,可以实现文件的读、写、追加操作
  • 文件打开要使用utf-8的编码格式(以免中文出现乱码)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值