• Python os模块:整理文件和目录最最最常用的模块


    盘一盘Python中的os模块

    os模块是Python标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。
    在这里插入图片描述

    图来自:https://www.cnblogs.com/ltkekeli1229/p/15709442.html

    os.getcwd()

    • 作用:获取当前的工作路径;
    >>> os.getcwd()
    'D:\\ResearchWay\\Code\\PythonCode\\SparseEncoder\\DeepKSVD'
    
    • 1
    • 2

    os.listdir(path)

    • 作用:传入任意一个path路径,返回的是该路径下所有文件和目录组成的列表;
    >>> os.listdir(os.getcwd())
    ['DKSVD.py', 'load_model.py', 'main.py', 'mnist', 'save']
    
    • 1
    • 2

    os.walk(path)

    • 含义 :传入任意一个path路径,深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组。下面的代码用到了元组拆包。

    元组拆包:就是将一个元组中的每个值,赋值给不同的变量;

    >>> for path, dirs, files in os.walk(os.getcwd()):
    ...     print(path)
    ...     print(dirs)
    ...     print(files)
    ... prinprint("-" * 50)
    ...
    D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD
    ['mnist', 'save']
    ['DKSVD.py', 'load_model.py', 'main.py']
    --------------------------------------------------
    D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD\mnist
    ['MNIST']
    []
    --------------------------------------------------
    D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD\mnist\MNIST
    ['raw']
    []
    --------------------------------------------------
    D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD\mnist\MNIST\raw
    []
    ['t10k-images-idx3-ubyte', 't10k-images-idx3-ubyte.gz', 't10k-labels-idx1-ubyte', 't10k-labels-idx1-ubyte.gz', 'train-images-idx3-ubyte', 'train-images-idx3-ubyte.gz', 'train-labels-idx1-ubyte', 'train-labels-idx1-ubyte.gz']
    --------------------------------------------------
    D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD\save
    []
    []
    --------------------------------------------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    os.path.exists(path)

    • 含义:传入一个path路径,判断指定路径下的目录是否存在。存在返回True,否则返回False
    >>> os.path.exists("D:\ResearchWay\Code\PythonCode")
    True
    >>> os.path.exists("D:\ResearchWay\Code\PythonCode\nihao")
    False
    
    • 1
    • 2
    • 3
    • 4

    os.mkdir(path)

    • 含义:传入一个path路径,创建单层(单个)文件夹;
    • 注意:如果文件夹已经存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;
    >>> if not os.path.exists(os.path.join(os.getcwd(), "hello")):
    ...     os.mkdir(os.path.join(os.getcwd(), "hello"))
    ...
    >>> os.listdir()
    ['DKSVD.py', 'hello', 'load_model.py', 'main.py', 'mnist', 'save']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    os.makedirs(path)

    • 含义:传入一个path路径,生成一个递归的文件夹;
    • 注意:如果文件夹存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;
    >>> if not os.path.exists(os.path.join(os.getcwd(), "gaga/ga")):
    ...     os.makedirs(os.path.join(os.getcwd(), "gaga/ga"))
    ...
    >>> os.listdir()
    ['DKSVD.py', 'gaga', 'hello', 'load_model.py', 'main.py', 'mnist', 'save']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    os.rmdir(path)

    传入一个path路径,删除指定路径下的文件夹;

    注意:该方法只能删除空文件夹,删除非空文件夹会报错

    >>> os.rmdir(os.path.join(os.getcwd() + "/hello"))
    >>> os.listdir()
    ['DKSVD.py', 'gaga', 'load_model.py', 'main.py', 'mnist', 'save']
    
    • 1
    • 2
    • 3

    os.path.join(path1, path2)

    传入两个path路径,将该路径拼接起来,形成一个新的完整路径;

    >>> os.path.join(os.getcwd(), "1.jpg")
    'D:\\ResearchWay\\Code\\PythonCode\\SparseEncoder\\DeepKSVD\\1.jpg'
    >>> os.path.join(os.getcwd(), "hello")
    'D:\\ResearchWay\\Code\\PythonCode\\SparseEncoder\\DeepKSVD\\hello'
    
    • 1
    • 2
    • 3
    • 4

    os.path.split(path)

    传入一个完整的path路径,将其拆分为绝对路径和文件名两部分;

    >>> os.path.split('D:\\h\\hello.jpg')
    ('D:\\h', 'hello.jpg')
    
    • 1
    • 2

    os.path.dirname(path)

    传入一个完整的文件路径,只获取其绝对路径;

    >>> os.path.dirname('D:\\h\\hello.jpg')
    'D:\\h'
    
    • 1
    • 2

    os.path.basename(path)

    传入一个完整的文件路径,只获取其文件名;

    >>> os.path.basename('D:\\h\\hello.jpg')
    'hello.jpg'
    
    • 1
    • 2

    os.path.isdir(path)

    传入一个完整的文件路径,判断它是否是文件夹;

    >>> for file in os.listdir():
    ...     if os.path.isdir(file):
    ... 		print(file)
    ...
    gaga
    mnist
    save
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    os.path.isfile(path)

    传入一个完整的文件路径,判断它是否是文件;

    >>> for file in os.listdir():
    ...     if os.path.isdir(file):
    ... 		print(file)
    ...
    DKSVD.py
    load_model.py
    main.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    os.remove()

    删除一个文件。

    >>> os.listdir()
    ['DKSVD.py', 'gaga', 'load_model.py', 'main.py', 'mnist', 'readme.txt', 'save']
    >>> os.remove("readme.txt")
    >>> os.listdir()
    ['DKSVD.py', 'gaga', 'load_model.py', 'main.py', 'mnist', 'save']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    os.path.sep

    返回当前操作系统的路径分隔符;

    >>> os.path.sep
    '\\'
    
    • 1
    • 2

    os.path.getsize(path)

    传入一个完整的文件路径,返回该文件的大小;

    >>> os.path.getsize(os.getcwd() + "/main.py")
    8763
    
    • 1
    • 2

    os.system()

    运行shell命令

    >>> os.system('dir')
     驱动器 D 中的卷是 DATA1
     卷的序列号是 1879-0856
    
     D:\ResearchWay\Code\PythonCode\SparseEncoder\DeepKSVD 的目录
    
    2022/08/29  19:12    <DIR>          .
    2022/08/29  16:49    <DIR>          ..
    2022/04/19  20:26             8,063 DKSVD.py
    2022/08/29  16:52    <DIR>          gaga
    2021/07/01  16:13             3,140 load_model.py
    2022/04/19  20:33             8,763 main.py
    2022/05/16  19:12    <DIR>          mnist
    2022/05/16  19:13    <DIR>          save
                   3 个文件         19,966 字节
                   5 个目录 111,421,562,880 可用字节
    0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    os.path.abspath()

    获得绝对路径。

    >>> os.path.abspath("main.py")
    'D:\\ResearchWay\\Code\\PythonCode\\SparseEncoder\\DeepKSVD\\main.py'
    
    • 1
    • 2

    os.path.normpath(path)

    规范path字符串形式。

    >>> os.path.normpath("D::/1.doc")
    'D::\\1.doc'
    
    • 1
    • 2

    os.path.splitext()

    分离文件名与扩展名。

    >>> os.path.splitext("hsdfoihjd.docx")
    ('hsdfoihjd', '.docx')
    
    • 1
    • 2
  • 相关阅读:
    onlyoffice基础环境搭建+部署+demo可直接运行 最简单的入门
    x210项目重新回顾之十七升级到linux4.19.114 +buildroot2018再讨论
    Vue3基础部分
    【3GPP】【核心网】【LTE】S1MME流程字段分析(一)
    【人工智能基础】人工神经网络
    TypeError: Cannot read properties of null (reading ‘insertBefore‘) vue项目报错
    【FNN回归预测】基于matlab蝙蝠算法优化前馈神经网络数据回归预测【含Matlab源码 2070期】
    【读书笔记】【Effective Modern C++】型别推导
    【独立站运营】如何在通货膨胀时期击败客户流失
    Unknown module(s) in QT: texttospeech
  • 原文地址:https://blog.csdn.net/qq_37085158/article/details/126591982