Python中对文件的读写操作、目录操作

文件读写的原理

  • 读写即“IO操作”
  • 操作流程:
graph LR
A[Python操作文件]-->B[打开或新建文件]
B-->C[读\写文件]
C-->D[关闭资源]

文件读写操作

open()函数
  • 按文件中数据的组织形式分类:
    • 文本文件:存储字符文本;
    • 二进制文件:数据内容以字节存储,比如mp3音频\jpg图片\doc文档
  • 语法规则;
    file=open(filename[,mode="r",encoding])
    
    • file:被创建的文件对象,相对或绝对路径;
    • filename:要创建或打开的文件的名称;
    • mode:打开模式,默认为只读;
      • t:文本模式
      • x:写模式,新建一个文件,如果该文件已存在,则报错;
      • r:以只读方式打开文件。文件指针将会放在文件开头;
      • w;打开一个文件用于写入。存在则打开文件并从头编辑;不存在则新建文件;
      • a:打开一个文件用于追加。存在则继续从文件的结尾编辑;如果该文件不存在,创建新文件进行写入;
      • b以二进制的方式打开文件,需要与其他模式一起使用:
        • rb二进制格式打开一个文件用于只读。文件指针将会放在文件的开头;
        • wb以二进制格式打开一个文件只用于写入;
      • +以读写的方式打开文件,需要与其他模式一起使用;
    • encoding:文本文件中字符的编写格式,默认为utf-8;
  • 注意:对文件操作结束后使用close()方法关闭系统资源;
常用文件操作方法
方法名说明
read([size])从文件读取指定的字节数,如果未给定或为负则读取所有
readline()读取整行,包括 “\n” 字符。
readlines()读取所有行并返回列表,若给定sizeint>0,
返回总和大约为sizeint字节的行,
实际读取值可能比sizeint较大,因为需要填充缓冲区。
write(str)将字符串写入文件,返回的是写入的字符长度。
writelines(s_list)向文件写入一个序列字符串列表,
如果需要换行则要自己加入每行的换行符。
seek(offset[,whence])移动文件读取指针到指定位置
tell()返回文件当前位置。
flush()刷新文件内部缓冲,
直接把内部缓冲区的数据立刻写入文件,
而不是被动的等待输出缓冲区写入
close()关闭文件。关闭后文件不能再进行读写操作
with语句
  • 自动管理上下文资源,不论什么原因跳出with块,都能保证文件正确的关闭,以此来达到释放资源的目的;
  • 语法结构:
    with open('filename', 'r') as file:
        代码块
    
  • 使用with关键字系统会自动调用file.close()方法,with的作用等效于try/finally语句,不论什么情况都会执行文件关闭操作;
  • with语句实现原理建立在上下文管理器之上;
    • 上下文管理器是一个实现__enter__和__exit__方法的类;
    • 使用 with 语句确保在嵌套块的末尾调用__exit__方法。
  • 在文件对象中定义了__enter__和__exit__方法,即文件对象也实现了上下文管理器;
    • 首先调用__enter__方法;
    • 然后执行with语句中的代码;
    • 最后调用__exit__方法;(即使出现错误,也会调用__exit__方法,也就是会关闭文件流)
  • 举例:
    with open("filename.txt","rb") as src_file:
        with open("copy.txt","wb") as target_file:
            target_file.write(src_file.read())
    
    实现文件的复制操作;

OS模块

  • Python内置的与操作系统功能和文件系统相关的模块;
  • 该模块中的语句的执行结果通常与操作系统有关;
  • 在不同的操作系统上运行,得到的结果可能不一样;
  • 可以对文件和目录进行操作;
  • 举例:
    • 调用系统程序
      import os
      os.system("notepad.exe")
      //打开记事本
      os.system("calc.exe")
      //打开计算器
      
    • 调用可执行文件
      import os
      os.startfile("可执行文件的exe文件")
      
  • 常用函数:
    函数名描述
    getcwd()返回当前的工作目录
    listdir(path)返回指定路径下的文件和目录信息
    mkdir(path[,mode])创建目录
    makedirs(path1/path2…[,mode])创建多级目录
    rmdir(path)删除目录
    removedirs(path1/path2…)删除多级目录
    chdir(path)将path设置为当前工作目录
    s.renames(old,new)递归地对目录进行更名,也可以对文件进行更名
os.path模块
  • 举例:
    • 调用系统程序
      import os.path
      print(os.path.abspath(filename.txt))
      //返回对应文件的绝对路径
      
  • 常用函数:
    函数名描述
    abspath(path)用于获取文件或目录的绝对路径
    relpath(path[,start])从start开始计算相对路径
    exists(path)用于判断文件或目录是否存在,
    如果存在返回True;否则返回False;
    join(path,name)将目录与目录或者文件名拼接起来
    split()分离文件目录和文件名
    splitext()分离文件名和扩展名
    basename(path)从一个目录中提取文件名
    dirname(path)从一个路径中提取文件路径,不包括文件名
    isdir(path)用于判断是否为路径
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

世澈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值