假设程序对应的文件的目录结构如下:
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