Python中的文件及目录操作(os 和 os.path模块)

我认为这一部分知识是非常重要的,因为Python现在大家使用的越来越多,使用最多的场景就是处理数据,而处理数据就需要经常操作文件!!!


  • Python 中的变量、序列和对象中存储的数据是暂时的,程序结束后就会丢失。为了长时间地保存程序中的数据,需要将程序中的数据存到磁盘文件中。

一、路径问题


二、文件操作

在 Python 中,内置了文件(File)对象。在使用文件对象时,首先需要通过内置的 open() 方法创建一个文件对象,然后通过该对象提供的方法进行一些 基本文件操作。

  • file = open(filename[,mode[,buffering]]):用于打开一个文件
    • filename:个包含了你要访问的文件名称的字符串值。
    • mode:mode 决定了打开文件的模式:只读,写入,追加等。
      在这里插入图片描述
    • buffering:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
  • file 对象常用方法
    • file.read([size]):size 未指定则返回整个文件,如果文件大小大于2倍内存则有问题,f.read()读到文件尾时返回""。
    • file.seek(偏移量, [起始位置]):用来移动文件指针。
      • 偏移量: 单位为字节,可正可负
      • 起始位置:0-文件头,默认值;1-当前位置;2-文件尾
    • file.readline():返回一行。
    • file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
    • file.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。
    • file.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)
    • file.close():关闭文件。
    • file.fulsh():将缓冲区的数据全部写入磁盘中。
  • 打开文件时使用with语句
    • 使用with语句能保证with语句执行完毕后关闭已经打开的文件
      with expression as target:
      	with-body
      
      • expression:打开文件的 open() 函数。
      • target:将 expression 的结果保存到该变量中。
      • with-body:用于指定 with 语句体,其中可以时执行 with 语句后相关的一些操作语句。如果不想执行任何语句,可以直接使用 pass 语句代替。

三、目录操作(os 和 os.path 模块)

① 在 Python 中,并没有直接操作目录的函数或者对象,而是需要使用内置的 os 和 os.path 模块实现。
② os 模块是 Python 内置的与操作系统功能和文件系统相关的模块。该模块中的语句的执行结果通常与操作系统有关,在不同的操作上运行,可能会导致不一样的结果哦。

  • os.name:用于获取操作系统的类型。
    • 如果os.name的输出结果是nt,则表示是Windows操作系统;如果是posix,则表示是LinuxUnixMac OS操作系统。
  • os.linesep:用于获取当前操作系统上的换行符。
  • os.sep:用于获取当前操作系统所使用的路径分隔符。

1、os 模块提供的与目录相关的函数

  • getcwd():返回当前的工作目录

  • listdir(path):返回指定路径下的文件和目录的名字

  • mkdir(path):创建一级目录

    • 该函数只能创建指定路径中的最后一级函数,如果该目录的上一级不存在,则会抛出FileNotFoundError异常。
    • 如果创建的目录已经存在了将抛出FileExistsError异常。(使用前需要先判断该目录是否已经存在)
    • 如果指定的目录有多级,而且最后一级的上级目录中有不存在的,则会抛出异常,并且目录创建不成功。可以使用下面的创建多级目录的方法或者编写递归函数。
    import os
    def mkdir(path):
    	if not os.path.isdir(path):  # 判断是否为有效路径
    		mkdir(os.path.split(path)[0])  # 递归调用
    	else:  # 如果目录存在直接返回
    		return
    	os.mkdir(path)  # 创建目录
    mkdir("D:/mr/test/demo")  # 调用递归函数,只能使用绝对路径,不能使用相对路径。
    
  • makedirs(path1/path2/...):创建多级目录

    • 如果创建的目录已经存在了将抛出FileExistsError异常。(使用前需要先判断该目录是否已经存在)
  • rmdir(path):删除一级目录

    • 如果要删除的目录不存在,将抛出FileNotFoundError异常。(使用前先判断该目录是否存在)
    • 只能删除空的目录,如果想要删除非空目录,则需要使用Python内置的标准模块shutilretree()函数实现。
  • removedirs(path1/path2/...):删除多级目录

  • remove(path):删除文件

  • chdir(path):把 path 设置为当前工作目录

  • walk(top[,topdown[,onerror[,followlinks]]):遍历目录树,该方法返回一个3元组的数组,包括所有路径名、所有目录列表和文件列表3个元素。

    • walk()函数只在Unix系统和Windows系统中有效。
  • rename(src, dst):将文件或目录 src 重命名为 dst。

  • stat(path):获取文件的基本信息。

2、os.path 模块提供的与目录相关的函数

  • isdir(path):用于判断是否为有效路径
  • split(path):将路径分割成目录和文件名两部分
  • abspath(path):用于获取文件或目录的绝对路径
  • exists(path):用于判断目录或者文件是否存在,如果存在则返回True,否则返回False
  • join(path1[,path2[,...]]):用于将两个或者多个路径拼接到一起组成一个新的路径。
    • 如果在拼接的路径中,没有一个绝对路径,那么最后拼接的将是一个相对路径。
    • 注意:os.path.join()函数在拼接路径时,并不会检测该路径是否真实存在。
    • 在使用 join() 函数时,如果要拼接的路径中,存在多个绝对路径,那么以从左到右为序最后一次出现的路径为准,并且该路径之前的参数都将被忽略。
    • 把两个路径拼接为一个路径时,不要直接使用字符串拼接,而是使用 os.path.join() 函数,这样可以正确处理不同操作系统的路径分隔符。
  • splitext():分离文件名和扩展名。
  • basename(path):从一个路径字符串中提取一个文件名。
  • dirname(path):从一个路径中提取文件路径,不包括文件名。
  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小宝945

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

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

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

打赏作者

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

抵扣说明:

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

余额充值