Python标准库之os

这篇具有很好参考价值的文章主要介绍了Python标准库之os。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. OS标准库简介

顾名思义,OS表示Operating System,即操作系统。OS标准库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数,具体安装位置可通过导入os模块查看os.__file__属性得到。当需要在Python代码中调用OS相关功能实现业务逻辑或者无法直接使用命令行工具时,我们就需要考虑导入此模块,因此有必要进行深入学习。

2. OS标准库常用函数和属性

2.1 文件和目录

2.1.1 os.getcwd()

返回表示当前工作目录的字符串

print("当前工作目录为:{}".format(os.getcwd())) # 返回当前工作目录

python os库,Python,python,linux,标准库,os,常用函数

2.1.2 os.mkdir(path, mode=0o777, *, dir_fd=None)

以指定数字表示的权限模式mode创建一个名为path的目录。某些系统会忽略 mode,如果没有忽略,那么Linux系统来说,新建文件夹的权限=指定数字表示的权限模式mode-当前系统用户的umask默认权限,如下所示

"""
Linux操作系统可通过umask命令获得4个八进制数表示的默认权限,root用户默认是0022,普通用户默认是 0002
第1位数代表文件所具有的特殊权限(SetUID、SetGID、Sticky BIT),后3位数表示表示umask权限值
分别对应所有者、用户组、其他人的权限值,权限与数字对应关系为:r->4,w->2,x->1
"""
exit_code=os.system("umask")

python os库,Python,python,linux,标准库,os,常用函数

"""
文件夹模式mode赋值为十进制511,等价于八进制0o777
"""
set_mode=511
os.mkdir(path="./cyr",mode=set_mode) # 在当前目录创建名为cyr的文件夹
# 长格式查看新创建的文件夹cyr可知其权限字符串为rwxr-xr-x,等价于转换后的数字权限111101101
!ls -l | grep cyr

python os库,Python,python,linux,标准库,os,常用函数

umask_value=0o0022 # 当前系统用户八进制表示umask默认权限
new_dir_mode=set_mode-umask_value
print("新建文件夹的权限为:{:b}".format(new_dir_mode))

python os库,Python,python,linux,标准库,os,常用函数

  • os.rmdir(path, *, dir_fd=None)

    移除(删除)目录 path。如果目录不存在或不为空,则会分别抛出 FileNotFoundErrorOSError 异常。

    os.rmdir("./cyr") # 删除空文件夹成功,无法查到cyr目录
    !ls | grep cyr
    
    os.rmdir("./why") # 删除不存在的文件夹FileNotFoundError报错
    

python os库,Python,python,linux,标准库,os,常用函数

os.rmdir("./nnunet/") # 删除不为空文件夹OSError报错

python os库,Python,python,linux,标准库,os,常用函数

  • os.chdir(path)

    将当前工作目录更改为 path

    print("切换前的当前工作目录为:{}".format(os.getcwd())) # 返回当前工作目录
    dst_path="/root" # 目标文件夹
    os.chdir(dst_path) # 将当前工作目录切换为/root
    print("切换后的当前工作目录为:{}".format(os.getcwd())) # 返回当前工作目录
    

python os库,Python,python,linux,标准库,os,常用函数

  • os.listdir(path='.')

    返回一个包含指定path下所有文件和目录名称的按任意顺序排列的列表,特殊条目’.‘和’…'除外

    dst_path="/code/" # 目标目录
    dirs_ls=os.listdir(path=dst_path) # 获得指定目录下全部文件和文件夹名称列表
    print(dirs_ls)
    

python os库,Python,python,linux,标准库,os,常用函数

2.2 os.path常见路径操作

2.2.1 os.path.abspath(path)

返回路径path 的绝对路径(标准化的),相当于字符串拼接,路径path不存在也不会报错

relative_path="tests/test_steps_for_sliding_window_prediction.py" # 路径path存在
print("{}对应的绝对路径为{}".format(relative_path,os.path.abspath(relative_path)))

python os库,Python,python,linux,标准库,os,常用函数

no_path="tests/none.py" # 路径path不存在
print("{}对应的绝对路径为{}".format(relative_path,os.path.abspath(no_path)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.2 os.path.basename(path)

返回路径 path 的基本名称

full_pathname="/proc/bus/pci/3a/08.0" # 路径path存在
print("全路径名称对应的文件名为{}".format(os.path.basename(full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

no_full_pathname="/demo/none.cpp" # 路径path不存在
print("全路径名称对应的文件名为{}".format(os.path.basename(no_full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.3 os.path.dirname(path)

返回路径 path 的目录名称

full_pathname="/proc/bus/pci/3a/08.0" # 路径path存在
print("全路径名称对应的目录名称为{}".format(os.path.dirname(full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

no_full_pathname="/demo/none.cpp" # 路径path不存在
print("全路径名称对应的目录名称为{}".format(os.path.dirname(no_full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.4 os.path.exists(path)

判断path是否指向一个已存在路径或已打开的文件描述符,存在返回True,不存在返回False

full_pathname="/proc/bus/pci/3a/08.0" # 路径path存在
print("全路径名称对应的目录是否存在?{}".format(os.path.exists(full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

no_full_pathname="/demo/none.cpp" # 路径path不存在
print("全路径名称对应的目录是否存在?{}".format(os.path.exists(no_full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.5 os.path.isabs(path)

判断path是否为一个绝对路径,是则返回True,不是或不存在则返回False。在 Unix 上,它就是以斜杠开头,而在 Windows 上,它可以是去掉驱动器号后以斜杠(或反斜杠)开头。

abs_pathname="/proc/bus/pci/3a/08.0" # 路径path存在
print("全路径名称对应的目录是否为绝对路径?{}".format(os.path.isabs(abs_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

rel_pathname="./nnunet/__init__.py" # 路径path是相对路径
print("全路径名称对应的目录是否绝对路径?{}".format(os.path.isabs(rel_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

no_pathname="./nnunet/none.py" # 路径path是不存在
print("全路径名称对应的目录是否绝对路径?{}".format(os.path.isabs(no_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.6 os.path.isfile(path)

若path为指向一个已存在文件的符号链接或一个已存在文件路径,返回True。若path为一个文件夹路径或不存在路径,返回False。

ls -li /opt/conda/bin/python* # 带inode节点信息并长格式查看python开头的文件和文件夹

python os库,Python,python,linux,标准库,os,常用函数

由上图可发现/opt/conda/bin/python为一个符号链接(软链接)指向一个已存在文件路径/opt/conda/bin/python3.7

abs_pathname="/opt/conda/bin/python3.7" # path为一个已存在文件路径
print("全路径名称对应的文件是否存在?{}".format(os.path.isfile(abs_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

symbolic_link="/opt/conda/bin/python" # path为指向一个已存在文件/opt/conda/bin/python3.7的符号链接
print("全路径名称对应的文件是否存在?{}".format(os.path.isfile(symbolic_link)))

python os库,Python,python,linux,标准库,os,常用函数

abs_path="/opt/conda/bin/" # 文件夹路径
print("全路径名称对应的文件是否存在?{}".format(os.path.isfile(abs_path)))

python os库,Python,python,linux,标准库,os,常用函数

no_full_pathname="/demo/none.cpp" # 路径path不存在
print("全路径名称对应的文件是否存在?{}".format(os.path.isfile(no_full_pathname)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.7 os.path.isdir(path)

若path为指向一个已存在文件夹的符号链接或一个已存在文件夹路径,返回True。若path为一个文件路径或不存在路径,返回False。

ls /code/nnunet/ # 查看已存在文件夹路径/code/nnunet/

python os库,Python,python,linux,标准库,os,常用函数

ln -s /code/nnunet/ ./symlink2codennunet # 当前目录即root下创建一个软链接指向一个已存在文件夹路径/code/nnunet/
ls -l /root/

python os库,Python,python,linux,标准库,os,常用函数

由上图可知root用户主目录下存在一个软链接symlink2codennunet指向一个已存在文件夹路径

exist_dir_path="/code/nnunet/"# path为一个已存在文件夹路径
print("全路径名称对应的文件夹是否存在?{}".format(os.path.isdir(exist_dir_path)))

python os库,Python,python,linux,标准库,os,常用函数

exist_dir_symlink="/root/symlink2codennunet/"# path为指向一个已存在文件夹的符号链接
print("全路径名称对应的文件夹是否存在?{}".format(os.path.isdir(exist_dir_symlink)))

python os库,Python,python,linux,标准库,os,常用函数

exist_file_path="/opt/conda/bin/python3.7"# path为一个已存在文件路径
print("全路径名称对应的文件夹是否存在?{}".format(os.path.isdir(exist_file_path)))

python os库,Python,python,linux,标准库,os,常用函数

no_path="/demo/none.cpp" # 路径path不存在
print("全路径名称对应的文件夹是否存在?{}".format(os.path.isdir(no_path)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.8 os.path.islink(path)

若path代表一个已存在的符号链接,则返回True,反之则返回False。如果 Python 运行时不支持符号链接,则总是返回 False

exist_symbolic_link="/opt/conda/bin/python" # path为指向一个已存在的符号链接
print("全路径名称对应的符号链接是否存在?{}".format(os.path.islink(exist_symbolic_link)))

python os库,Python,python,linux,标准库,os,常用函数

no_symbolic_link="/demo/no_link" # path为指向一个不存在的符号链接
print("全路径名称对应的符号链接是否存在?{}".format(os.path.islink(no_symbolic_link)))

python os库,Python,python,linux,标准库,os,常用函数

exist_file_path="/opt/conda/bin/python3.7"# path为一个已存在文件路径
print("全路径名称对应的符号链接是否存在?{}".format(os.path.islink(exist_file_path)))

python os库,Python,python,linux,标准库,os,常用函数

exist_dir_path="/root/"# path为一个已存在文件夹路径
print("全路径名称对应的符号链接是否存在?{}".format(os.path.islink(exist_dir_path)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.9 os.path.join(path, *paths)

拼接两个或多个路径部分,按需要插入/。如果参数中某个部分是绝对路径,则绝对路径前的路径都将被丢弃,并从绝对路径部分开始连接。如果最后一部分为空,则结果将以分隔符结尾。

previous_path,abs_dirname,basename,empty_part="model","/code","demo.py",""
print("参数中某个部分是绝对路径拼接后为{}".format(os.path.join(previous_path,abs_dirname,basename)))

python os库,Python,python,linux,标准库,os,常用函数

print("拼接两个或多个路径部分,按需要插入'/'拼接后为{}".format(os.path.join(previous_path,basename)))

python os库,Python,python,linux,标准库,os,常用函数

print("最后一部分为空以分隔符结尾{}".format(os.path.join(previous_path,basename,empty_part)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.10 os.path.normcase(path)

规范路径名称的大小写。 在 Windows 上,将路径名称中的所有字符转为小写,并将正斜杠转为反斜杠。 在其他操作系统上,将路径不加修改地返回。

Linux操作系统

print("当前操作系统模块名为:{}".format(os.name))
windows_style_path=r"C:/Users\defaultuser0/APPData"
print("Windows路径规范化后为{}".format(os.path.normcase(windows_style_path)))

python os库,Python,python,linux,标准库,os,常用函数

Windows操作系统

python os库,Python,python,linux,标准库,os,常用函数

2.2.11 os.path.split(path)

将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。head 末尾的斜杠会被去掉,除非它是根目录(即它仅包含一个或多个斜杠)。

norm_path="/nnunet/configuration.py" # 一般路径
ends_with_slash_path="/code/nnunet/" # 以斜杠结尾的路径
no_slash_path="HIP_Logo.png" # 没有斜杠的路径
empty_path="" # 空路径
root_path="/" # 根目录
print("一般路径head={},tail={}".format(*os.path.split(norm_path)))
print("以斜杠结尾的路径head={},tail={}".format(*os.path.split(ends_with_slash_path)))
print("没有斜杠的路径head={},tail={}".format(*os.path.split(no_slash_path)))
print("空路径head={},tail={}".format(*os.path.split(empty_path)))
print("根目录head={},tail={}".format(*os.path.split(root_path)))

python os库,Python,python,linux,标准库,os,常用函数

2.2.12 os.path.splitext(path)

将路径 path 拆分为一对,即 (root, ext),使 root + ext == path,其中 ext 为空或以英文句点开头,且最多包含一个句点。路径前的句点将被忽略,例如 splitext(‘.cshrc’) 返回 (‘.cshrc’, ‘’)。

dir_path="/code/nnunet/" # 文件夹路径
multi_dot_file_path="/code/i.thy.py" # 包含多个句点的文件路径
single_dot_file_path="/code/we.py" # 包含单个句点的文件路径
starts_with_dot_file_path=".bashrc" # 以句点开头的路径
print("文件夹路径root={},ext={}".format(*os.path.splitext(dir_path)))
print("包含多个句点的文件路径root={},ext={}".format(*os.path.splitext(multi_dot_file_path)))
print("包含单个句点的文件路径root={},ext={}".format(*os.path.splitext(single_dot_file_path)))
print("以句点开头的路径root={},ext={}".format(*os.path.splitext(starts_with_dot_file_path)))

python os库,Python,python,linux,标准库,os,常用函数

2.3 其他常用命令

2.3.1 os.name

导入的依赖特定操作系统的模块的名称,返回’posix’表示Linux,'nt’表示Windows,'java’表示Java虚拟机

print("当前操作系统平台名称为{}".format(os.name))

python os库,Python,python,linux,标准库,os,常用函数

2.3.2 os.__file__

以字符串形式返回os模块安装的绝对路径

     import os
     print("os模块安装绝对路径是{}".format(os.__file__))

python os库,Python,python,linux,标准库,os,常用函数文章来源地址https://www.toymoban.com/news/detail-785542.html

3. 参考文献

  • os — 操作系统接口模块 — Python 3.7.13 文档
  • os.path — 常见路径操作 — Python 3.7.13 文档
  • Linux umask详解:令新建文件和目录拥有默认权限 (biancheng.net)
  • Linux chmod命令:修改文件或目录的权限 (biancheng.net)

到了这里,关于Python标准库之os的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python常用库之pymongo库(Python操作Mongodb数据库)| Django项目连接MongoDB方式选型(MongoEngine)

    github:https://github.com/mongodb/mongo-python-driver PyMongo用于与Python与MongoDB数据库进行交互的工具。bson包是Python的BSON格式 的实现。Pymongo包是MongoDB的本地Python驱动程序。gridfs包是gridfs 的pymongo实现。 Pymongo支持MongoDB 3.6、4.0、4.2、4.4、5.0和6.0。 总结:PyMongo 是 MongoDB 与 Django 交互的标准

    2024年02月10日
    浏览(44)
  • Python 常用基础模块(二):os模块

    os 模块是 Python 内置的与操作系统中的文件系统相关的模块,该模块依赖于操作系统。通常情况下,如不特别指出,该模块提供的方法、属性在Windows 和 UNIX(Linux 和Mac OS X) 系统上都是可用的。 说明:本文的内容都是以 Windows 操作系统为例进行介绍的,所有代码的执行结果也都

    2024年02月08日
    浏览(34)
  • 标准C库之strcpy,strncpy函数(拷贝C风格字符串、拷贝字符串,可指定拷贝长度)

    如果,想要深入的学习标准C库中strcpy,strncpy函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: 即可查阅到完整的资料信息。 strcpy 函数是 C 语言标准库中的一个函数,它用于将一个字符串(C 语言中以字符数组表示的字符串)复制到另一个字符串。 strcpy 函

    2023年04月26日
    浏览(29)
  • Python中的os模块中的常用方法

    Python中的os模块(Operating System模块)提供了与操作系统交互的函数。以下是一些os模块中常用的方法: 一、文件和目录操作: os.getcwd() : 获取当前工作目录。 os.chdir(path) : 改变当前工作目录。 os.listdir(path=\\\'.\\\') : 返回指定目录下的所有文件和目录列表。 os.mkdir(path) : 创建目录。

    2024年02月03日
    浏览(25)
  • 深入探索Python中的os.listdir函数

    1. 引言 在Python中,文件和目录操作是常见的任务之一。而 os.listdir() 函数是Python中用于获取指定目录下所有文件和子目录的函数之一。本篇博客将深入探索 os.listdir() 函数的用法和注意事项。 2. os模块简介 Python的os模块是与操作系统交互的一个接口,提供了许多与文件和目录

    2024年02月08日
    浏览(30)
  • 深入了解Python中的os.path.join函数

    在Python中,处理文件和目录路径是常见的任务。为了简化路径的拼接和操作,Python提供了 os.path 模块,其中的 join 函数是一个非常重要且常用的函数。本文将深入介绍 os.path.join 函数的用法和注意事项,以帮助读者更好地理解和使用该函数。 os.path 模块是Python中用于处理文件

    2024年02月09日
    浏览(32)
  • 【Python基础入门篇】基本函数——os与sys模块

    os模块和sys模块 os模块负责程序与操作系统交互,提供访问操作系统的接口 sys模块负责程序与Python解释器交互,用于操控Python运行环境 待完善

    2024年01月25日
    浏览(35)
  • Python的常用标准库

             Python是一种功能强大且灵活的编程语言,得益于其丰富的标准库,开发者可以轻松地处理各种任务和问题。本文将介绍 Python 的常用标准库,探索其功能和用途,并提供相关的 Python 代码示例。 os 模块提供了与操作系统交互的功能,例如文件和目录操作、进程管

    2024年02月08日
    浏览(24)
  • 竞赛中常用的Python 标准库

    对竞赛中常用得标准库进行解析和给出代码模板 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要判断到 int(sqrt(n))+1),埃式筛,gcd,lcm,快速幂(位运算移位操作),大数分解(分解为质数的

    2024年02月07日
    浏览(23)
  • Python模块和包:sys模块、os模块和变量函数的使用

    模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序。模块化具有方便开发、维护和复用的优点。在Python中,每个py文件就是一个模块。 在一个模块中引入外部模块有两种方式: import 模块名 和 import 模块名 as 模块别名 。后者可以

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包