15 python的文件操作

一、文件打开

  • 文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作,文件也叫I/O(Input/Output)
  • 文件的操作步骤
    • 打开文件
    • 对文件进行各种操作(读、写)然后保存
    • 关闭文件
  • 文件会有一个返回值。返回一个对象,这个对象就表示的是当前的文件
  • open() 返回值 返回了一个对象,这个对象就是当前打开的这个文件
  • file 要打开文件的名字(路径)

二、关闭文件

  • 调用close()方法来关闭文件
  • with…as 语句不用写close()来关闭。它自带关闭

三、读取文件

  • 通过read()来读取文件的内容
  • 调用open()来打开一个文件,可以将文件分为2中类型:
    • 纯文本文件(使用utf-8编码编写的文件)
    • 二进制文件(图片、mp3、视频…)
  • open()打开文件时,默认是以文本文件的形式打开的open()默认的编码
    为None。所以处理文本文件时要指定编码
# 读不大文件标准写法
try:
    with open(file_name) as file_obj:
        print(file_obj.read())
        # 文件操作....
except FileNotFoundError:
    print(f'{file_name}文件不存在')

四、打开大文件

  • 通过read()读取文件内容时会将文件中所有的内容全部读取出来。如果对于读取的文件比较大的话。会一次性的将文件加载到内存中。容易导致内存泄露。所以对于较大的文件。不要直接调用read()
  • read()可以接收一个size作为的参数。该参数用来指定要读取字符的数量。默认值为-1.-1也就是要读取全部的内容
  • 每次读取都会从上次读取到的位置开始。如果字符的数量小于size。则会读取所有的。如果读取到最后的文件。则会返回空串
  • readline() 该方法用来读取一行
  • readlines() 该方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表当中返回
# 读文件标准写法
try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定义一个变量,指定每次读取字符的数量
        chunk = 100		# 根据需要可以调整
        # 创建一个循环来读取文件的内容
        while True:
            content = file_obj.read(chunk)
            # 退出循环
            if not content:
                # 内容读完了 退出循环
                break
            print(content,end='')
except FileNotFoundError:
    print(f'{file_name}文件不存在')

五、文件的写入

  • write()来向文件中写入内容
    • 该方法可以分多次向文件写入内容
    • 写入完成之后该用法会返回写入的字符的个数
  • 使用open()函数打开文件时,必须要指定打开文件要做的操作(读、写、追
    加)。如果不指定操作类型,则默认是读取文件,而读取文件是不能向文件中写入
    • r 表示只读
    • w表示可以写。使用w写入文件时,如果文件不存在则会创建一个文件。如果文件存在则会覆盖原文件内容
    • a表示追加内容
    • x 用来新建文件,如果不存在就创建文件,文件存在我就报错了
with open(file_name, 'a', encoding='utf-8') as file_obj:
    # write()来向文件中写内容
    # write()是有返回值的,它的返回值是写入字符的个数
    # file_obj.write('Ke hou hao hao fu xi!')
    file_obj.write('nba\n')
    file_obj.write('cba\n')
    file_obj.write('kfc\n')
    r = file_obj.write(str(123)+'\n') # TypeError: write() argument must be str, not int
    print(r)

六、二进制文件写入

  • 读取文本文件时,size是以字符为单位。读取二进制文件时,size是以字节为单位
  • 我们用wb来写入二进制文件
with open(filename,'rb') as file_obj:
    # 将读取到的内容写出来
    # 定义一个新的文件
    new_name = 'abc.mp3'
    with open(new_name,'wb') as new_obj:
        chuck = 1024 *100
        while True:
            # 从已有的文件读取内容
            content = file_obj.read(chuck)
            # 内容读取完毕,循环结束
            if not content:
                break
            new_obj.write(content)

七、文件操作类型

官网显示常用文件open常用操作类型

CharacterMeaning
‘r’open for reading (default)只读打开文件
‘w’open for writing, truncating the file first如果文件不存在,就创建文件,并写入内容,如果文件存在,则打开并清空文件,从头开始写入
‘x’open for exclusive creation, failing if the file already exists如果文件不存在,就创建,如果文件存在,则报错
‘a’open for writing, appending to the end of the file if it exists从文件最后,追加内容
‘b’binary mode操作二进制文件
‘t’text mode (default)
‘+’open for updating (reading and writing)
  • 文件操作的类型
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

详见《Python File(文件) 方法》
参考《python之文件操作(基础)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值