如何用python读取和写入文件

本文详细介绍了如何在Python中使用不同的路径类型(绝对路径、相对路径)打开和操作文件,包括各种模式(r、rb、w、wb等)的使用,以及read、write、readline、readlines等函数的运用。还介绍了withopen语句的便捷性。
摘要由CSDN通过智能技术生成

如何用python读取和写入文件

文件操作:

​ 所谓的文件操作, 就是通过路径来找到对应的文件, 从而对其进行打开, 读, 写, 备份, 关闭等操作.

文件来源:

​ 文件来源即文件路径:指的是文件或者文件夹的路径(地址), 根据写法不同又分为 绝对路径 和 相对路径.

绝对路径:类似于寄快递时的收件方,快递员要想将物品送到指定位置,必须写到省市县,以及镇村街道.在电脑里面则为相对应的 盘符:\文件夹\文件,例如:桌面文件 C:\Users\86188\Desktop,想要获取指定的文件或打开文件,即在后面加入文件名 C:\soft\Everything\Everything.exe即可

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5C86188%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C171439986383在这里插入图片描述
4.png&pos_id=img-MWrGpEiQ-1714742867557)

​ 相对路径:类似于寄快递时的寄件方,只需告诉快递员你在哪个小区即可,当前小区附近的快递员就会根据你给的地址,自动找到你的位置,因为快递员是了解你所在的区域的.在电脑中相对路径则只取当前目录之后的目录就行,假如当前目录是在C:\soft\Everything目录下,想要打开文件,只需录入.\Everything.exe即可,同样也可打开文件

在这里插入图片描述


在Windows系统中在python中文件路径的两种写法
  1. 使用 “\”:

    由于"\"在python编译器中具有转义的功能,例如换行\n,制表符\t,要想使用,则该使用两个\\表示,如:C:\\soft\\Everything, C:\\soft\\Everything\\Everything.exe

  2. 使用**“/”**

    使用"/",无需担心转义功能,正常输入即可,如:C:/soft/Everything, C:/soft/Everything/Everything.exe,这写法同样适用于Linux系统,如:/root/soft/Everything

  3. 使用**“.”**

    使用".\“或”./"代表当前文件所在的目录,如: .\\Everything.exe,./Everything.exe

  4. 使用**“…”**

​ 使用"…\“或”…/"代表当前文件所在的目录,如: …\\Everything.exe,…/Everything.exe,如果完整目录为: C:/soft/Everything/Everything.exe,当前目录为C:/soft/Everything, …/则代表的位置为C:/soft/目录下


文件操作步骤
  1. 打开文件
  2. 读取文件
  3. 关闭文件,释放资源
打开文件

打开文件的格式:

文件对象名 = open(文件路径, 模式, 码表)

模式解释:
​ r read, 只读, 针对于字符有效.
​ rb read byte, 只读, 以二进制形式来操作.
​ w write, 只写, 覆盖写入.
​ wb write byte, 只写, 覆盖写入, 以二进制形式来操作.
​ a append, 追加写入

# 通过使用绝对路径,以字符串形式获取数据,路径使用'\'
f = open('C:\\data\\test\\计算机基础英语单词打字.txt', 'r')
# 通过使用绝对路径,以字符串形式获取数据,路径使用'/'
f = open('C:/data/test/计算机基础英语单词打字.txt', 'r')
# 通过使用相对路径,以字符串形式获取数据,路径使用'./'
f = open('./data/计算机基础英语单词打字.txt', 'r')
# 通过使用相对路径,以字符串形式获取数据,路径使用'.\\'
f = open('.\\data\\计算机基础英语单词打字.txt', 'r')

# 通过使用绝对路径,以字符串形式获取数据,路径使用'/',码表使用utf-8
f = open('C:/data/test/计算机基础英语单词打字.txt', 'r',encoding='utf-8')

# 通过使用绝对路径,以字符串形式获取数据,路径使用'/',以二进制形式获取数据
# 由于只读方式,获取不了二进制数据(如:图片,音频,视频,其他文件),(rb)也是通用版读取方式
f = open('C:/data/test/计算机基础英语单词打字.txt', 'rb')
读取文件
# 通过使用绝对路径,以字符串形式获取数据,路径使用'/',码表使用utf-8
f = open('C:/data/test/计算机基础英语单词打字.txt', 'r',encoding='utf-8')

# 一次性读取所有,一般用于f的数据来源为rb二进制形式读取的时候
data = f.read()
# 按行读取,用于f的数据来源为r字符串形式读取的时候
data = f.readline()
# 读取所有行,用于f的数据来源为r字符串形式读取的时候
data = f.readlines()
# read()
# 打开文件
src_f = open('C:/data/test/计算机基础英语单词打字.txt', 'rb')
# 读取数据
data = src_f.read()
#  释放资源.
src_f.close()
# readline()
# 打开文件
src_f = open('C:/data/test/计算机基础英语单词打字.txt','r',encoding='utf-8')
# 按行读取,用于src_f的数据来源为r字符串形式读取的时候
data = src_f.readline()
#  释放资源.
src_f.close()
# readlines()
# 打开文件
src_f = open('C:/data/test/计算机基础英语单词打字.txt','r',encoding='utf-8')
# 读取所有行,用于src_f的数据来源为r字符串形式读取的时候
data = src_f.readlines()
#  释放资源.
src_f.close()
写入文件
# 使用write写入文本文件
# 通过使用绝对路径,以字符串形式获取数据,路径使用'/',码表使用utf-8
dest_f = open('C:/data/test/test.txt', 'w',encoding='utf-8')
#将数据写入到test.txt文件中
dest_f.write('hello,world!!!')
# 打开文件数据
src_f = open('C:/data/test/计算机基础英语单词打字.txt','r',encoding='utf-8')
# 读取文件数据
data = src_f.read()
# 将读取的数据写入到test文本文件中
dest_f.write(data)
# 关闭文件.释放资源
src_f.close()
dest_f.close()
# 使用writelines写入文本文件
# 通过使用绝对路径,以字符串形式获取数据,路径使用'/',码表使用utf-8
dest_f = open('C:/data/test/test.txt', 'w',encoding='utf-8')
#将数据写入到test.txt文件中
dest_f.write('hello,world!!!')
# 打开文件数据
src_f = open('C:/data/test/计算机基础英语单词打字.txt','r',encoding='utf-8')
# 读取所有行
data = src_f.readlines()
# 将读取的数据逐行写入
dest_f.writelines(data)
# 关闭文件.释放资源
src_f.close()
dest_f.close()
# 使用二进制形式,写入文本文件,也可写入图片,音频,视频,等其他文件
# 通过使用绝对路径,以字符串形式获取数据,路径使用'/'
dest_f = open('C:/data/test/test.txt', 'wb')
# 打开文件数据
src_f = open('C:/data/test/计算机基础英语单词打字.txt','rb')
while True:
    #  一次读指定的字节数, 推荐: 字节数为 1024的整数倍.
    data = src_f.read(8192)     # 一次读取8KB = 1024字节 * 8 = 8192b = 8kb
    #  读不到, 说明读完了, 循环结束.
    if len(data) == 0 or data == '':
        break
    #  走这里, 说明读到了, 把读取到的内容写到 目的地文件中.
    dest_f.write(data)
# 关闭文件.释放资源
dest_f.close()
src_f.close()
扩展:使用with open()语法
  • 介绍:

​ 它主要是针对于文件操作的, 当对文件进行读写完毕后, 里边的内容(文件对象)会自动释放, 无需手动close().

  • 格式:

​ with open(路径, 模式, 码表) as 文件对象名:

​ 正常的读写代码

with open('resource/1.txt', 'rb') as src_f, open('resource/2.txt', 'wb') as dest_f:
    # 拷贝.
    while True:
        #  一次读指定的字节数, 推荐: 字节数为 1024的整数倍.
        data = src_f.read(10240)     # # 一次读取10KB = 1024字节 * 10 = 10240b = 10kb
        # 3.2 读不到, 说明读完了, 循环结束.
        if len(data) == 0 or data == '':
            break
        # 3.3 走这里, 说明读到了, 把读取到的内容写到 目的地文件中.
        dest_f.write(data)

= 1024字节 * 10 = 10240b = 10kb
# 3.2 读不到, 说明读完了, 循环结束.
if len(data) == 0 or data == ‘’:
break
# 3.3 走这里, 说明读到了, 把读取到的内容写到 目的地文件中.
dest_f.write(data)

本文适用于学习python基础学习的同学,如有不足之处欢迎大家指正.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值