《Python进阶系列》十: 整理文件和目录最最最常用的os模块

盘一盘Python中的os模块

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

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

os.getcwd()

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

os.listdir(path)

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

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
[]
[]
--------------------------------------------------

os.path.exists(path)

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

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']

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']

os.rmdir(path)

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

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

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

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'

os.path.split(path)

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

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

os.path.dirname(path)

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

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

os.path.basename(path)

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

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

os.path.isdir(path)

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

>>> for file in os.listdir():
...     if os.path.isdir(file):
... 		print(file)
...
gaga
mnist
save

os.path.isfile(path)

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

>>> for file in os.listdir():
...     if os.path.isdir(file):
... 		print(file)
...
DKSVD.py
load_model.py
main.py

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']

os.path.sep

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

>>> os.path.sep
'\\'

os.path.getsize(path)

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

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

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

os.path.abspath()

获得绝对路径。

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

os.path.normpath(path)

规范path字符串形式。

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

os.path.splitext()

分离文件名与扩展名。

>>> os.path.splitext("hsdfoihjd.docx")
('hsdfoihjd', '.docx')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的西瓜瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值