python OS 模块常用方法详解
本文目录
os.path.dirname(__file__) 返回当前运行文件所在目录的绝对路径
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:以
/开头会被认为是绝对路径
各个路径都不是绝对路径,路径拼接过程中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、判断相关
判断路径是否为目录,返回布尔值 import os print(os.path.isdir(os.getcwd()))os.path.isdir(path)
判断路径是否为文件,返回布尔值 import os print(os.path.isfile(os.getcwd()))os.path.isfile(path)
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