python OS 模块常用方法详解

发布于 更新于
本文目录
  1. 1、返回文件路径
  2. 2、返回指定文件的绝对路径
  3. 3、路径拼接
  4. 各个路径都不是绝对路径,路径拼接过程中os.path.join()函数会自动加上\
  5. 各个路径有一个是绝对路径\
  6. 如果最后一个路径为空(空格),则生成的路径以一个\分隔符结尾
  7. 注意点
  8. 4、目录创建
  9. 5、目录切换
  10. 6、目录切换
  11. 7、目录删除
  12. 8、目录查询
  13. 9、判断相关
  14. os.path.isdir(path)
  15. os.path.isfile(path)
  16. 10、目录树生成器
  17. os.walk(top,topdown=True,onerror=None,followlinks=False)
  18. 参数
  19. 注意点
  20. 演示(你可以随意创建多层目录,包含文件,目录即可)

技术文章Linux与数据库

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、判断相关

  • 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、目录树生成器

    • 根据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

继续阅读