专栏首页青笔原创python 标准库:os

python 标准库:os

os 顾名思义,就是与操作系统相关的标准库。如:文件,目录,执行系统命令等。

1. 导入模块

os 是 python 标准库模块,随 python 一起安装,无需单独安装,可直接导入。

import os

2. path 子模块

涉及与磁盘文件操作,最常使用的当属 path 模块了。pathos 的子模块,可以通过 from os import path 使用,也可以直接通过 os.path 属性的方式使用。本文,为了保持一致性,统一采用后者的书写形式。

2.1 exists(path)

检测文件或目录是否存在。存在返回 True , 不存在返回 False

os.path.exists("dog.jpeg")
True

2.2 isfile(path)

判断是否为文件。是返回 True, 不是返回 False。也可以用来判断文件是否存在。

os.path.isfile("dogs/")
False

2.3 isdir(path)

判断是否为目录。是返回 True, 不是返回 False。也可以用来判断目录是否存在。

os.path.isdir("dogs/")
True

2.4 basename(path)

返回不包含所在目录的文件名(含扩展)。

os.path.basename("dir1/dir2/file.ext")
'file.ext'

2.5 dirname(path)

返回文件所在目录。

os.path.dirname("dir1/dir2/file.ext")
'dir1/dir2'

2.6 split(path)

返回一个元组。元组第一个元素为文件所在目录,第二个元素为文件名(含扩展)。等效于 (dirname(path), basename(path))

os.path.split("dir1/dir2/file.ext")
('dir1/dir2', 'file.ext')

2.7 splitext(path)

返回一个元组。元组第一个元素为文件所在目录和文件名(不含扩展),第二个元素为扩展名(包含 .)。常用来读取或更改文件扩展名。

os.path.splitext("dir1/dir2/file.ext")
('dir1/dir2/file', '.ext')

2.8 join(path, *paths)

将路径不同部分拼接成一个完整的路径。等效于 os.sep.join([path, *paths])

os.path.join("dir1", "dir2", "file.ext")
'dir1/dir2/file.ext'

2.9 getsize(path)

返回文件大小。单位字节。

os.path.getsize("dog.jpeg")
18335

3 目录操作

3.1 listdir(path=’.’)

返回一个列表。列表为给定目录下所有文件和子目录,但不包含特殊目录 ...。默认为当前目录。

os.listdir("dogs")[:5]
['122.Pointer',
 '069.French_bulldog',
 '124.Poodle',
 '112.Nova_scotia_duck_tolling_retriever',
 '043.Canaan_dog']

3.2 mkdir(path, mode=0o777)

创建名为 path 的目录。并以数字形式指定目录权限,默认权限为 777 。

os.mkdir("newdir")

3.3 makedirs(path, mode=0o777)

递归方式创建路径为 path 的目录。并以数字形式指定目录权限,默认权限为 777 。可以看作功能更强大的 mkdir,它会自动创建叶子节点目录的所有上级目录,而 mkdir 必须在上级目录已经存在情况下,才能创建叶子节点的目录。

os.makedirs("parent/child/newdir")

3.4 rmdir(path)

删除目录。目录必须存在,并且只能删除空目录。不存在或不为空,都会异常。要想递归删除整个目录树,请使用 shutil.rmtree()

os.rmdir("newdir")

3.5 removedirs(path)

递归删除目录。目录必须存在,并且只能删除空目录。不存在或不为空,都会异常。与 rmdir 不同的是,在删除了叶子节点目录后,会逐次删除上级目录,直到遇到不为空的目录。

os.removedirs("parent/child/newdir")

3.6 remove(path)

删除文件。不能删除目录,给定路径必须为文件,否则会异常。

Warm Suggestion: 以下复制文件的操作,推荐使用 shutil.copyfile

# 复制文件
with open("dog.jpeg", "rb") as f:
    content = f.read()
    with open("dog.copy.jpeg", "wb") as f2:
        f2.write(content)

# 删除文件
os.remove("dog.copy.jpeg")

4. 其他 os 接口

4.1 getenv(key, default=None)

获取环境变量。

os.getenv("PATH")
'/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'

4.2 get_exec_path(env=None)

返回用于搜索可执行文件的目录列表。看以看作是 PATH 环境变量的列表形式。

os.get_exec_path()
['/usr/local/bin',
 '/usr/bin',
 '/bin',
 '/usr/sbin',
 '/sbin']

4.3 system(command)

在当前进程中,启动子进程,执行命令 command(字符串),主进程会阻塞,直到子进程执行完成。这是通过调用标准C函数 system() 来实现的,并且具有相同的限制。

if os.name == "nt":
    command = "dir"
else:
    command = "ls -l"

os.system(command)
0

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 查看虚拟机版本

    二、 左侧没有终端图标的情况,可以搜索按钮(图中左侧第一个),输入termial,打开终端

    小麦苗DBA宝典
  • 配置点击就能运行Python程序的bat批处理脚本

    在编写和调试程序时,一般我们会在集成编辑环境里写代码和运行,但如果程序比较完善需要快速运行,或者让同事在其他电脑上快速运行时,再打开IDE(Integrated...

    蛰虫始航
  • Python 模块

    模块可以被别的程序引入,以使用该模块中的函数等功能,这也是使用 python 标准库的方法。

    小麦苗DBA宝典
  • 判定表case的自动化用例设计

    大家好,小编今天和大家分享一个自己编写的自动化测试工具,主要解决的问题是如何遍历测试用例中“判定表”方法设计出来的case。

    用户5521279
  • 在Windows下配置定时运行的Python脚本

    目前我们写出的Python代码,无论是jupyter notebook里还是变成.py格式的脚本,都是需要手动点按钮运行,但是在有些需要自动化定期运行脚本的情况...

    蛰虫始航
  • 用欧拉计划学习Rust编程(第40~45题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识。学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快...

    申龙斌
  • Appium+python自动化(三十七)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 下(超详解)

    接着上一篇继续看一下如何并发测试以及并发测试的过程中,可能遇到的问题,在这里宏哥把宏哥遇到的和小伙伴或者童鞋们,一起分享一下。

    北京-宏哥
  • python解析xml文件

    本来今天准备学习下electron的,结果npm工具的安装真是费了劲,网速差的不得了。为了完成今天的日更,只能放弃,今天来谢谢python的xml解析吧。

    efonfighting
  • 用Python实现透视表的value_sum和countdistinct功能

    在pandas库中实现Excel的数据透视表效果通常用的是df['a'].value_counts()这个函数,表示统计数据框(DataFrame) df的列a...

    蛰虫始航
  • 即学即用的30段Python实用代码

    原标题 | 30 Helpful Python Snippets That You Can Learn in 30 Seconds or Less

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券