Python - 文件操作(2)

Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855
Python学习 - 数据类型:https://blog.csdn.net/wanzijy/article/details/125341568
Python学习 - 流程控制:https://blog.csdn.net/wanzijy/article/details/125400906
Python学习 - 运算符(操作符):https://blog.csdn.net/wanzijy/article/details/125387919
Python学习 - 列表:https://blog.csdn.net/wanzijy/article/details/125457990
Python学习 - 字典:https://blog.csdn.net/wanzijy/article/details/125567225
Python学习 -元组和集合:https://blog.csdn.net/wanzijy/article/details/125577609
Python学习 - 函数(1):https://blog.csdn.net/wanzijy/article/details/125669084
Python学习 - 函数(2):https://blog.csdn.net/wanzijy/article/details/125739981
Python学习 - 类与对象:https://blog.csdn.net/wanzijy/article/details/125826952
Python学习 - 面向对象之封装:https://blog.csdn.net/wanzijy/article/details/125902925
Python学习 - 面向对象之继承:https://blog.csdn.net/wanzijy/article/details/125963829
Python学习 - 面向对象之多态:https://blog.csdn.net/wanzijy/article/details/127140632
Python - 文件操作(1):https://blog.csdn.net/wanzijy/article/details/127099071
Python - 文件操作(2):https://blog.csdn.net/wanzijy/article/details/127150189
Python学习 - 垃圾回收、特殊方法和模块:https://blog.csdn.net/wanzijy/article/details/126202999
Python学习 - 异常处理:https://blog.csdn.net/wanzijy/article/details/126803672

1. 文件写入

在打开文件时,必须要指定打开文件所需要的操作(读、写、追加)
如果不指定操作类型,则默认是读取文件,而读取文件时是不能向文件中写入的
write() 操作的如果是一个文本文件的话,则 write() 需要传递一个参数 (mode, 读取模式)

读取模式的值如下:

  1. r 表示只读
  2. w 表示可写
    • 使用 “ w ” 来写入文件时,如果文件不存在则会创建文件
    • 如果文件存在则会将原来的内容给覆盖掉
    • 可以多次调用向文件中写入内容
    • 但是只能写入字符串,如果不是字符串的话,要调用 str() 函数
    • 不会自动换行,要加换行,可以在写入内容的后面加上 “ \n ”
    • 有一个返回值,返回的是写入的字符数量
file_name = 'Demo.txt'
with open(file_name, 'w', encoding='utf-8') as file_obj:
    file_obj.write('Hello World\n')
    file_obj.write('Hello World\n')
    file_obj.write('Hello World\n')
    r = file_obj.write(str('123\n'))
    print(r)  #  4,会算上换行符
  1. a 表示追加
    • 如果文件不存在,会创建一个新的文件
    • 如果文件存在,会在原本内容的后面追加写入的新内容
  2. + 表示为操作符增加功能
    • r+ 既可读又可写,文件不存在会报错
    • w+ 在写的基础上增加读的功能
    • a+ 在追加内容上变成可读的
  3. x 用来新建文件,如果文件不存在则创建,存在则报错

2. 二进制文件

所有的文本以外的文件,都叫做二进制文件

继续上述的读取模式的值:
6. rt 读取文本文件(默认值
7. rb 读取二进制文件,是以字节为单位的。如果用这种模式去读取中文的话,中文会以二进制的方式显示

读的话就在 “ b ” 前加上 “ r ” ,写就在 “ b ” 前加上 “ w ” ,以此类推


例子:将一个 mp4 的文件读取并写入到一个新的 mp4 文件

file_name = 'login.mp4'
with open(file_name, 'rb') as file_obj:
    new_name = 'a.mp4'
    with open(new_name, 'wb') as new_obj:
        chunk = 1024 * 100
        while True:
            content = file_obj.read(chunk)  #  从已有对象中读取数据
            if(not content):  #  判断是否读取完毕
                break
            new_obj.write(content)  #  将读取到的数据写入到新对象中

3. seek() 和 tell()

tell() 用来查看当前读取的位置

with open('Demo.txt', 'rb') as file_obj:
    print(file_obj.read(50))
    print('当前读取到了:', file_obj.tell())

seek()

  • 是以字节为单位的,中文的话,一个中文两个字节(但是不能将一个中文的两个字节拆分开来进行计算)
  • 修改当前读取的位置,修改之后会在修改后的位置开始读取
  • 需要两个参数:
    • 第一个参数:要切换到的位置
    • 第二个参数:计算位置的方式(0表示从头计算,默认值;1表示从当前位置计算;2表示从最后位置开始计算)
with open('Demo.txt', 'rb') as file_obj:  #  文件的长度是94
    # print(file_obj.read(50))
    file_obj.seek(50)
    print('当前读取到了:', file_obj.tell())  #  50
    file_obj.seek(80, 0)
    print('当前读取到了:', file_obj.tell())  #  80
    file_obj.seek(70, 1)
    print('当前读取到了:', file_obj.tell())  #  150,进行了累加
    file_obj.seek(1, 2)  #  表示从最后的位置再向后一位开始,此时肯定是空串,因为语句在最后位置了
    print('当前读取到了:', file_obj.tell())  #  95
    file_obj.seek(-1, 2)  # -1 表示在最后的位置向前一位开始
    print('当前读取到了:', file_obj.tell())  # 95

4. 其他操作

os 模块

listdir([path])

  • 获取指定路径下的所有文件
  • 不传参数 “path” 时,默认路径为 “.”,即当前目录
  • 该方法会返回一个列表,目录中的每一个文件(夹)的名字都是列表中的以一个元素

getcwd() 获取当前所在的目录
chdir() 切换当前所在的目录,作用相当于cmd命令中的 “cd”

print(os.getcwd())
os.chdir('..')
print(os.getcwd())
os.chdir('E:/')
print(os.getcwd())

rename(’旧名字’,’新名字’)

  • 对文件进行重命名
  • 当第二个参数是一个新的路径时,可以实现剪切的效果

mkdir(‘目录名’):在当前目录下创建一个目录
rmdir(‘目录名’):删除目录
remove(‘文件名’):删除文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LF3_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值