1、返回文件路径
os.path.dirname(__file__)
返回当前运行文件所在目录的绝对路径os.getcwd()
返回当前进程的工作目录
2、返回指定文件的绝对路径
os.path.abspath(path)
import os
print(os.path.abspath('demo01.py'))
输出: D:\ningMengClass\demoProiect01\day01\demo01.py
3、路径拼接
-
os.path.join(path1[, path2[, ...]])
-
说明
- Windows :以
\
开头会被认为是绝对路径 - Linux、Mac:以
/
开头会被认为是绝对路径
- Windows :以
-
各个路径都不是绝对路径,路径拼接过程中os.path.join()函数会自动加上
\
- 不显示添加
\
import os
print(os.path.join('api','test','login.html'))
输出: api\test\login.html - 显示添加
\
import os
print(os.path.join('api\','test\','login'))
输出: api\test\login.html
- 不显示添加
-
各个路径有一个是绝对路径
\
- 一个路径是绝对路径,从绝对路径开始拼接,前面的舍弃
import os
print(os.path.join('api','\test','login.html'))
输出: \test\login.html - 多个路径是绝对路径,直接从最后一个绝对路径开始拼接
import os
print(os.path.join('\api','\test','login.html'))
输出: \test\login.html
- 一个路径是绝对路径,从绝对路径开始拼接,前面的舍弃
-
如果最后一个路径为空(空格),则生成的路径以一个
\
分隔符结尾import os
print(os.path.join('api','test','login.html',''))
输出: api\test\login.html\ -
注意点
\
为特殊字符需要进行转义处理
4、目录创建
os.mkdir(path[, mode])
- path:要创建的目录,最后一个目录是需要创建的目录名称,可以是相对或者绝对路径
- mode: 要为目录设置的权限数字模式,windows 下忽略 mode 参数,使用默认就好
- 如果目录有多级,则创建最后一级,如果最后一级目录的上级目录有不存在的,则会抛出一个 OSError
import os
#创建testDir目录
os.mkdir(os.path.join(os.getcwd(),'testDir'))
5、目录切换
os.chdir(path)
import os
os.chdir('D:/ningmengban/demoProject/testDir')
print(os.getcwd())
输出: D:/ningmengban/demoProject/testDir
6、目录切换
os.chdir(path)
将当前工作路径切换到指定路径下
import os
os.chdir('D:/ningmengban/demoProject/testDir')
print(os.getcwd())
输出: D:/ningmengban/demoProject/testDir
7、目录删除
os.rmdir(path)
- 删除path指定的【空目录】,如果目录非空,则抛出一个OSError异常
import os #删除testDir目录 os.rmdir(os.path.join(os.getcwd(),'testDir'))
8、目录查询
os.listdir(path)
- 返回path指定的文件夹中的【文件】和【目录】列表
import os print(os.listdir(os.getcwd()))
9、判断相关
-
os.path.isdir(path)
判断路径是否为目录,返回布尔值
import os
print(os.path.isdir(os.getcwd())) -
os.path.isfile(path)
判断路径是否为文件,返回布尔值
import os
print(os.path.isfile(os.getcwd()))
10、目录树生成器
-
os.walk(top,topdown=True,onerror=None,followlinks=False)
- 根据top参数,生成每一个目录下(包含它自己)下的文件绝对路径、目录名称、文件名称
- 返回格式:(dirpath, [dirname1,dirname2,dirname3,],[filename1,filename2,filename3)]
-
参数
- top:目录路径
- topdown=True:设置返回参数的顺序
- 默认topdown=True:从最上层目录开始返回,则从上到下扫描目录
- topdown未指定:从上到下扫描目录
- 默认topdown=False:自下而上扫描目录
- onerror=None
- followlinks=False:如果设置为true,则访问符号链接指向的目录
-
注意点
- 返回值按照目录路径、目录名称、文件名称顺序返回,如果有一项没有就返回空列表
-
演示(你可以随意创建多层目录,包含文件,目录即可)
import os #topdown=True for filename in os.walk(top=r'D:\testDir',topdown=True): print(filename) 输出: ('D:\\testDir', ['dir1', 'dir2', 'dir3'], ['t0.txt']) ('D:\\testDir\\dir1', ['dir11'], ['t1.txt']) ('D:\\testDir\\dir1\\dir11', [], ['t11.txt']) ('D:\\testDir\\dir2', ['dir22'], ['t2.txt']) ('D:\\testDir\\dir2\\dir22', [], ['t22.txt']) ('D:\\testDir\\dir3', ['dir33'], ['t3.txt']) ('D:\\testDir\\dir3\\dir33', [], ['t33.txt']) #topdown=False for filename in os.walk(top=r'D:\testDir',topdown=False): print(filename) 输出: ('D:\\testDir\\dir1\\dir11', [], ['t11.txt']) ('D:\\testDir\\dir1', ['dir11'], ['t1.txt']) ('D:\\testDir\\dir2\\dir22', [], ['t22.txt']) ('D:\\testDir\\dir2', ['dir22'], ['t2.txt']) ('D:\\testDir\\dir3\\dir33', [], ['t33.txt']) ('D:\\testDir\\dir3', ['dir33'], ['t3.txt']) ('D:\\testDir', ['dir1', 'dir2', 'dir3'], ['t0.txt']) #分别输出 for dir_path,dir_name,file_name in os.walk(top=r'D:\testDir',topdown=False): print(dir_path) print(dir_name) print(file_name) 输出: D:\testDir\dir1\dir11 [] ['t11.txt'] D:\testDir\dir1 ['dir11'] ['t1.txt'] D:\testDir\dir2\dir22 [] ['t22.txt'] D:\testDir\dir2 ['dir22'] ['t2.txt'] D:\testDir\dir3\dir33 [] ['t33.txt'] D:\testDir\dir3 ['dir33'] ['t3.txt'] D:\testDir ['dir1', 'dir2', 'dir3'] ['t0.txt']
欢迎来到testingpai.com!
注册 关于