【python】目录操作

假设程序对应的文件的目录结构如下:

FileProcess
├── FilePro
│   ├── dir
│      ├── subdir
│         ├── filepath.py
│         └── xx.py
│      └── bar.py
│   ├── data.txt
│   └── fileReader.py

获取文件目录

1)获取当前目录 os.getcwd()
在这里插入图片描述
2)获取文件目录 os.path.dirname(path)
功能:去掉文件名,返回目录
在这里插入图片描述3)获取文件上级目录
os.path.dirname(os.path.dirname(__file__))
os.path.dirname(os.getcwd())
os.path.abspath(os.path.join(os.getcwd(), ".."))
在这里插入图片描述
4)获取上上级文件目录 os.path.abspath(os.path.join(os.getcwd(), "../.."))
在这里插入图片描述
注:
a) 根据获取上级和上上级目录,可以以此类推,获得上上上级目录等os.path.abspath(os.path.join(os.getcwd(), "../../.."))
b) __file__ 为当前文件的path, 若果在ide中运行此行会报错,可改为 d = path.dirname('.')
c) os.path.abspath(d) 返回d所在目录规范的绝对路径

获取文件目录列表

1) os.listdir(path)
若path不输入时,默认为当前文件对应目录下的文件列表
在这里插入图片描述
2) os.scandir(path)
os.scandir() 调用时返回一个迭代器而不是一个列表,可以遍历迭代器内容并打印文件名。
os.scandir() 和with语句一起使用,因为它支持上下文管理协议。使用上下文管理器关闭迭代器并在迭代器耗尽后自动释放获取的资源。
在这里插入图片描述
3)Path(path).iterdir()
该方法属于pathlib模块,调用 pathlib.Path() 并传入了一个路径参数。然后调用 .iterdir() 来获取 my_directory 下的所有文件和目录列表。
在这里插入图片描述

创建目录

1)创建单个目录 os.mkdir(path,mode=0o777)
若目录存在,怎会抛出FileExistsError 异常
在这里插入图片描述
2)创建单个或多个目录 Pathlib.Path(path).mkdir(mode=0o777, parents=False, exist_ok=False)
若目录存在,怎会抛出FileExistsError 异常。若设置参数exist_ok=True则会忽略 FileExistsError 异常
在这里插入图片描述
3)创建多个目录 os.mkdirs(name, mode=0o777, exist_ok=False)
多个递归目录间以’/‘分割
在这里插入图片描述
4)创建多个目录 Path(name).mkdir(parents=True, exist_ok=false)
多个递归目录间以’/'分割
在这里插入图片描述

删除文件或目录

1)删除文件
pathlib.Path.unlink() # 删除单个文件
os.remove() # 删除单个文件,不能删除目录
os.unlink() # 删除单个文件
2)删除目录
os.rmdir() #删除一个空目录
pathlib.Path.rmdir() #删除一个空目录
shutil.rmtree() # 删除完整的目录树,可用于删除非空目录

复制文件或目录

shutil.copy(src,dst) #将文件从src复制到dst,元数据(如文件的创建和修改时间)不会保留
shutil.copy2(src,dst) #将文件从src复制到dst,保留所有文件元数据
shutil.copytree() #复制整个目录及其中包含的所有内容

移动文件或目录

shutil.move(src,dst) #将文件或目录从src移动至dst

重命名文件或目录

os.rename(src,dst) # 将源文件或目录src 重命名为 dst
Path(src).rename(dst) #将源文件或目录src重命名为dst

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值