零基础小白必看:python基本操作-文件、目录及路径( 三 )

注意 open/read/close 需要一起操作 , 其中 open 操作需要指定模式 , 上述是以读写模式打开文件 , 若文件不存在则创建文件 。 各模式具体如下:
flags -- 该参数可以是以下选项 , 多个使用 "|" 隔开:

  • os.O_RDONLY: 以只读的方式打开
  • os.O_WRONLY: 以只写的方式打开
  • os.O_RDWR : 以读写的方式打开
  • os.O_NONBLOCK: 打开时不阻塞
  • os.O_APPEND: 以追加的方式打开
  • os.O_CREAT: 创建并打开一个新文件
  • os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
  • os.O_EXCL: 如果指定的文件存在 , 返回错误
  • os.O_SHLOCK: 自动获取共享锁
  • os.O_EXLOCK: 自动获取独立锁
  • os.O_DIRECT: 消除或减少缓存效果
  • os.O_FSYNC : 同步写入
  • os.O_NOFOLLOW: 不追踪软链接
3.2 创建操作前面已提到 , 使用 open, 指定模式 ,若文件不存在 , 则创建 。 有点类似 linux 操作中的 touch 。
>>> f = os.open("test/test.txt", os.O_RDWR|os.O_CREAT)# 若文件不存在 , 则创建>>> os.close(f)复制代码3.3 修改操作
  • open/write/close :写入文件内容
  • rename, renames : 与前面介绍的修改名称、移动操作一致 。
>>> f = os.open("test/test.txt", os.O_RDWR|os.O_CREAT)# 打开文件>>> os.write(f,b"test write data")# 写入内容15>>> os.close(f)# 关闭文件复制代码3.4 删除
  • remove :删除文件 , 注意不能删除目录(使用 rmdir/removedirs)
>>> os.remove("test/test-1")# 删除目录报错Traceback (most recent call last):File "", line 1, in FileNotFoundError: [WinError 2] 系统找不到指定的文件 。 : 'test/test1'>>> os.remove("test/test.txt")# 删除文件>>> os.listdir("test")['test-1']复制代码4 路径操作在使用文件或目录过程中 , 经常需要对文件及目录路径进行处理 , 因此 , os 中有一个子模块 path , 专门就是处理路径操作的 。 主要有以下操作:
  • abspath :返回绝对路径
>>> os.path.abspath("test")'E:\\pythontest\\test'复制代码
  • exists :判断文件或目录是否存在
>>> os.path.exists("test")True>>> os.path.exists("test/test.txt")False>>> os.path.exists("test/test-1/test-1.txt")True复制代码
  • isfile/isdir :判断是否为文件/目录
>>> os.path.isdir("test")True>>> os.path.isfile("test/test-1/test-1.txt")True复制代码
  • basename/dirname:获取路径尾部和路径头部 。 其实就是以路径中最后一个 / 为分割符 , 分为头(head) 和尾(tail)两部分 , tail 是 basename 返回的内容 , head 是 dirname 返回的内容 。 经常用于获取文件名 , 目录名等操作
>>> os.path.basename("test/test-1/test-1.txt")# 文件名'test-1.txt'>>> os.path.basename("test/test-1/")# 空内容''>>> os.path.basename("test/test-1")# 目录名'test-1'>>> os.path.dirname("test/test-1/test-1.txt")# 文件所在目录路径'test/test-1'>>> os.path.dirname("test/test-1/")# 目录路径'test/test-1'>>> os.path.dirname("test/test-1")# 父目录路径'test'复制代码
  • join :合成路径 , 即把两个参数使用系统路径分割符进行连接 , 形成完整路径 。
>>> os.path.join("test","test-1")# 连接两个目录'test\\test-1'>>> os.path.join("test\\test-1","test-1.txt")# 连接目录与文件名'test\\test-1\\test-1.txt'复制代码