os --- 多种操作系统接口¶
os.path --- 常用路径操作
源代码: Lib/posixpath.py (用于 POSIX) 和 Lib/ntpath.py (用于 Windows)。
此模块实现了一些有用的路径名称相关函数。 要读取或写入文件请参见 open(),对于访问文件系统请参阅 os 模块。 传给 path 形参的可以是字符串、字节串或者任何实现了 os.PathLike 协议的对象。
Unlike a Unix shell, Python does not do any automatic path expansions. Functions such as expanduser() and expandvars() can be invoked explicitly when an application desires shell-like path expansion. (See also the glob module.)
参见
pathlib 模块提供高级路径对象。
备注
所有这些函数都仅接受字节或字符串对象作为其参数。如果返回路径或文件名,则结果是相同类型的对象。
备注
由于不同的操作系统具有不同的路径名称约定,因此标准库中有此模块的几个版本。os.path 模块始终是适合 Python 运行的操作系统的路径模块,因此可用于本地路径。但是,如果操作的路径 总是 以一种不同的格式显示,那么也可以分别导入和使用各个模块。它们都具有相同的接口:
posixpath用于Unix 样式的路径ntpath用于 Windows 路径
在 3.8 版更改: exists()、lexists()、isdir()、isfile()、islink() 和 ismount() 现在遇到系统层面上不可表示的字符或字节的路径时,会返回 False,而不是抛出异常。
- os.path.abspath(path)
-
返回路径 path 的绝对路径(标准化的)。在大多数平台上,这等同于用
normpath(join(os.getcwd(), path))的方式调用normpath()函数。在 3.6 版更改: 接受一个 path-like object。
- os.path.basename(path)
-
返回路径 path 的基本名称。这是将 path 传入函数
split()之后,返回的一对值中的第二个元素。请注意,此函数的结果与Unix basename 程序不同。basename 在'/foo/bar/'上返回'bar',而basename()函数返回一个空字符串 ('')。在 3.6 版更改: 接受一个 path-like object。
- os.path.commonpath(paths)
-
接受包含多个路径的序列 paths,返回 paths 的最长公共子路径。如果 paths 同时包含绝对路径和相对路径,或 paths 在不同的驱动器上,或 paths 为空,则抛出
ValueError异常。与commonprefix()不同,本方法返回有效路径。可用性: Unix, Windows。
3.5 新版功能.
在 3.6 版更改: 接受一个 类路径对象 序列。
- os.path.commonprefix(list)
-
接受包含多个路径的 列表,返回所有路径的最长公共前缀(逐字符比较)。如果 列表 为空,则返回空字符串 (
'')。备注
此函数是逐字符比较,因此可能返回无效路径。要获取有效路径,参见
commonpath()。>>>>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib'])
'/usr/l' >>> os.path.commonpath(['/usr/lib', '/usr/local/lib'])
'/usr'在 3.6 版更改: 接受一个 path-like object。
- os.path.dirname(path)
-
返回路径 path 的目录名称。这是将 path 传入函数
split()之后,返回的一对值中的第一个元素。在 3.6 版更改: 接受一个 path-like object。
- os.path.exists(path)
-
如果 path 指向一个已存在的路径或已打开的文件描述符,返回
True。对于失效的符号链接,返回False。在某些平台上,如果使用os.stat()查询到目标文件没有执行权限,即使 path 确实存在,本函数也可能返回False。在 3.3 版更改: path 现在可以是一个整数:如果该整数是一个已打开的文件描述符,返回
True,否则返回False。在 3.6 版更改: 接受一个 path-like object。
- os.path.lexists(path)
-
如果 path 指向一个已存在的路径,返回
True。对于失效的符号链接,也返回True。在缺失os.lstat()的平台上等同于exists()。在 3.6 版更改: 接受一个 path-like object。
- os.path.expanduser(path)
-
在 Unix 和 Windows 上,将参数中开头部分的
~或~user替换为当前 用户 的家目录并返回。在 Unix 上,开头的
~会被环境变量HOME代替,如果变量未设置,则通过内置模块pwd在 password 目录中查找当前用户的主目录。以~user开头则直接在 password 目录中查找。在 Windows 上,如果
USERPROFILE已设置将会被使用,否则HOMEPATH和HOMEDRIVE将被组合起来使用。 初始的~user会通过检查当前用户的家目录中匹配USERNAME的最后一部分目录名并执行替换来处理。如果展开路径失败,或者路径不是以波浪号开头,则路径将保持不变。
在 3.6 版更改: 接受一个 path-like object。
在 3.8 版更改: Windows 不再使用
HOME。
- os.path.expandvars(path)
-
输入带有环境变量的路径作为参数,返回展开变量以后的路径。
$name或${name}形式的子字符串被环境变量 name 的值替换。格式错误的变量名称和对不存在变量的引用保持不变。在 Windows 上,除了
$name和${name}外,还可以展开%name%。在 3.6 版更改: 接受一个 path-like object。
- os.path.getmtime(path)
-
返回 path 的最后修改时间。返回值是一个浮点数,为纪元秒数(参见
time模块)。如果该文件不存在或不可访问,则抛出OSError异常。在 3.6 版更改: 接受一个 path-like object。
- os.path.getctime(path)
-
返回 path 在系统中的 ctime,在有些系统(比如 Unix)上,它是元数据的最后修改时间,其他系统(比如 Windows)上,它是 path 的创建时间。返回值是一个数,为纪元秒数(参见
time模块)。如果该文件不存在或不可访问,则抛出OSError异常。在 3.6 版更改: 接受一个 path-like object。
- os.path.getsize(path)
-
返回 path 的大小,以字节为单位。如果该文件不存在或不可访问,则抛出
OSError异常。在 3.6 版更改: 接受一个 path-like object。
- os.path.isabs(path)
-
如果 path 是一个绝对路径,则返回
True。在 Unix 上,它就是以斜杠开头,而在 Windows 上,它可以是去掉驱动器号后以斜杠(或反斜杠)开头。在 3.6 版更改: 接受一个 path-like object。
- os.path.isfile(path)
-
如果 path 是
现有的常规文件,则返回True。本方法会跟踪符号链接,因此,对于同一路径,islink()和isfile()都可能为True。在 3.6 版更改: 接受一个 path-like object。
- os.path.isdir(path)
-
如果 path 是
现有的目录,则返回True。本方法会跟踪符号链接,因此,对于同一路径,islink()和isdir()都可能为True。在 3.6 版更改: 接受一个 path-like object。
- os.path.islink(path)
-
如果 path 指向的
现有目录条目是一个符号链接,则返回True。如果 Python 运行时不支持符号链接,则总是返回False。在 3.6 版更改: 接受一个 path-like object。
- os.path.ismount(path)
-
如果路径 path 是 挂载点 (文件系统中挂载其他文件系统的点),则返回
True。在 POSIX 上,该函数检查 path 的父目录path/..是否在与 path 不同的设备上,或者path/..和 path 是否指向同一设备上的同一 inode(这一检测挂载点的方法适用于所有 Unix 和 POSIX 变体)。本方法不能可靠地检测同一文件系统上的绑定挂载 (bind mount)。在 Windows 上,盘符和共享 UNC 始终是挂载点,对于任何其他路径,将调用GetVolumePathName来查看它是否与输入的路径不同。3.4 新版功能: 支持在 Windows 上检测非根挂载点。
在 3.6 版更改: 接受一个 path-like object。
- os.path.join(path, *paths)
-
Join one or more path segments intelligently. The return value is the concatenation of path and all members of *paths, with exactly one directory separator following each non-empty part, except the last. That is, the result will only end in a separator if the last part is either empty or ends in a separator. If a segment is an absolute path (which on Windows requires both a drive and a root), then all previous segments are ignored and joining continues from the absolute path segment.
On Windows, the drive is not reset when a rooted path segment (e.g.,
r'\foo') is encountered. If a segment is on a different drive or is an absolute path, all previous segments are ignored and the drive is reset. Note that since there is a current directory for each drive,os.path.join("c:", "foo")represents a path relative to the current directory on driveC:(c:foo), notc:\foo.在 3.6 版更改: 接受一个 类路径对象 用于 path 和 paths 。
- os.path.normcase(path)
-
规范路径的大小写。在 Windows 上,将路径中的所有字符都转换为小写,并将正斜杠转换为反斜杠。在其他操作系统上返回原路径。
在 3.6 版更改: 接受一个 path-like object。
- os.path.normpath(path)
-
通过折叠多余的分隔符和对上级目录的引用来标准化路径名,所以
A//B、A/B/、A/./B和A/foo/../B都会转换成A/B。这个字符串操作可能会改变带有符号链接的路径的含义。在 Windows 上,本方法将正斜杠转换为反斜杠。要规范大小写,请使用normcase()。备注
On POSIX systems, in accordance with IEEE Std 1003.1 2013 Edition; 4.13 Pathname Resolution, if a pathname begins with exactly two slashes, the first component following the leading characters may be interpreted in an implementation-defined manner, although more than two leading characters shall be treated as a single character.
在 3.6 版更改: 接受一个 path-like object。
- os.path.realpath(path, *, strict=False)
-
返回指定文件的规范路径,消除路径中存在的任何符号链接(如果操作系统支持)。
如果一个路径不存在或是遇到了符号链接循环,并且 strict 为
True,则会引发OSError。 如果 strict 为False,则会尽可能地解析路径并添加结果而不检查路径是否存在。备注
这个函数会模拟操作系统生成规范路径的过程,Windows 与 UNIX 的这个过程在处理链接和后续路径组成部分的交互方式上有所差异。
操作系统 API 会根据需要来规范化路径,因此通常不需要调用此函数。
在 3.6 版更改: 接受一个 path-like object。
在 3.8 版更改: 在 Windows 上现在可以正确解析符号链接和交接点 (junction point)。
在 3.10 版更改: 增加了 strict 形参。
- os.path.relpath(path, start=os.curdir)
-
返回从当前目录或可选的 start 目录至 path 的相对文件路径。 这只是一个路径计算:不会访问文件系统来确认 path 或 start 是否存在或其性质。 在 Windows 上,当 path 和 start 位于不同驱动器时将引发
ValueError。start defaults to
os.curdir.可用性: Unix, Windows。
在 3.6 版更改: 接受一个 path-like object。
- os.path.samefile(path1, path2)
-
如果两个路径都指向相同的文件或目录,则返回
True。这由设备号和 inode 号确定,在任一路径上调用os.stat()失败则抛出异常。可用性: Unix, Windows。
在 3.2 版更改: 添加了对 Windows 的支持。
在 3.4 版更改: Windows现在使用与其他所有平台相同的实现。
在 3.6 版更改: 接受一个 path-like object。
- os.path.sameopenfile(fp1, fp2)
-
如果文件描述符 fp1 和 fp2 指向相同文件,则返回
True。可用性: Unix, Windows。
在 3.2 版更改: 添加了对 Windows 的支持。
在 3.6 版更改: 接受一个 path-like object。
- os.path.samestat(stat1, stat2)
-
如果 stat 元组 stat1 和 stat2 指向相同文件,则返回
True。这些 stat 元组可能是由os.fstat()、os.lstat()或os.stat()返回的。本函数实现了samefile()和sameopenfile()底层所使用的比较过程。可用性: Unix, Windows。
在 3.4 版更改: 添加了对 Windows 的支持。
在 3.6 版更改: 接受一个 path-like object。
- os.path.split(path)
-
将路径 path 拆分为一对,即
(head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。head 末尾的斜杠会被去掉,除非它是根目录(即它仅包含一个或多个斜杠)。在所有情况下,join(head, tail)指向的位置都与 path 相同(但字符串可能不同)。另请参见函数dirname()和basename()。在 3.6 版更改: 接受一个 path-like object。
- os.path.splitdrive(path)
-
将路径 path 拆分为一对,即
(drive, tail),其中 drive 是挂载点或空字符串。在没有驱动器概念的系统上,drive 将始终为空字符串。在所有情况下,drive + tail都与 path 相同。在 Windows 上,本方法将路径拆分为驱动器/UNC 根节点和相对路径。
如果路径 path 包含盘符,则 drive 将包含冒号之前的所有内容包括冒号本身:
>>>>>> splitdrive("c:/dir")
("c:", "/dir")如果路径 path 包含 UNC 路径,则 drive 将包含主机名和 share,直至第四个分隔符但不包括该分隔符:
>>>>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")在 3.6 版更改: 接受一个 path-like object。
- os.path.splitext(path)
-
将路径名称 path 拆分为
(root, ext)对使得root + ext == path,并且扩展名 ext 为空或以句点打头并最多只包含一个句点。如果路径 path 不包含扩展名,则 ext 将为
'':>>>>>> splitext('bar')
('bar', '')如果路径 path 包含扩展名,则 ext 将被设为该扩展名,包括打头的句点。 请注意在其之前的句点将被忽略:
>>>>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')path 中最后一部分如果以点号开头则会被视为 root 的一部分:
>>>>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')在 3.6 版更改: 接受一个 path-like object。
- os.path.supports_unicode_filenames
-
如果(在文件系统限制下)允许将任意 Unicode 字符串用作文件名,则为
True。
os --- 多种操作系统接口¶的更多相关文章
- [No000035]操作系统Operating System之OS Interface操作系统接口
接口(Interface) 仍然从常识开始… 日常生活中有很多接口:电源插座:汽车油门… 那什么是接口? 连接两个东西.信号转换.屏蔽细节… Interface: electrical circuit ...
- 【翻译】XV6-DRAFT as of September 3,2014 第0章 操作系统接口
操作系统接口 操作系统的任务是让多个程序共享计算机(资源),并且提供一系列基于计算机硬件的但更有用的服务.操作系统管理并且把底层的硬件抽象出来,举例来说,一个文字处理软件(例如word)不需要关心计算 ...
- XV6操作系统接口
操作系统接口 操作系统的工作是(1)将计算机的资源在多个程序间共享,并且给程序提供一系列比硬件本身更有用的服务.(2)管理并抽象底层硬件,举例来说,一个文字处理软件(比如 word)不用去关心自己使用 ...
- xv6课本翻译之——第0章 操作系统接口
Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...
- Mac OS X操作系统常见快捷键集锦
Mac OS X操作系统常见快捷键集锦 启动时的快捷键 启动时按住 X 键 : 强制从 Mac OS X 启动(适用于那些在同一宗卷上安装了 Mac OS X 和 Mac OS 9 双系统的 Mac ...
- Mac OS X 操作系统下JDK安装与环境变量配置
1. 下载JDK. 去oracle官网的Java SE Downloads页面(如图 1),下载Mac os版本JDK(如图 2): 图 1 图 2 2. 安装JDK. 下载完成后,双击.dmg文 ...
- os与操作系统进行交互,sys解释器相关,random随机数,shutil解压和压缩
1.os 与操作系统相关 对文件的处理 对路径的处理 import os#主要用于与操作系统进行交互 掌握: print(os.makedirs('a/b/c'))#创建目录 可用递归创建 print ...
- POSIX 可移植操作系统接口
在一些较老的c语言资料,经常会出现“POSIX标准”. 它的专业解释是: 可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),是IEE ...
- Mac OS X 操作系统下IntelliJ IDEA激活码(Activation code)破解
Mac OS X 操作系统(版本:10.13.6)下载并安装IntelliJ IDEA: Version: 2018.2.4 Download IntelliJ IDEA 下一步对IntelliJ I ...
- python OS模块 对操作系统接口调用
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cdos.curdir ...
随机推荐
- linux 服务器上如何判断网络是否开通
项目上由于升级了kafka需要测试下网络是否是通的,因此需要使用命令 nc -zv ip地址 端口这个命令来跑一下网络是否是通的,最后发现是新的kafka的config使用了新的端口,没有开通网络 ...
- python datetime.now() 的问题
python中,获取指定日期格式的时间可以用 datetime.datetime.now().strftime("%Y-%m-%d") 定义函数的时候,是可以设置参数的默认值的. ...
- 运行C时报错:relocation truncated to fit: R_X86_64_PC32 against undefined symbol `WinMain‘ collect2: error
写C时,遇到报错 [Running] cd "d:\考研\408\LeranC\Code\GramForC\" && gcc 01data_types.c -o 0 ...
- spring-boot-plus2.7.12版本重磅发布,三年磨一剑,兄弟们等久了,感谢你们的陪伴
Everyone can develop projects independently, quickly and efficiently! spring-boot-plus是一套集成spring bo ...
- 【阅读笔记】超分之LANR-NLM算法
论文信息 [Single Image Super-Resolution via Locally Regularized Anchored Neighborhood Regression and Non ...
- 【MAUI Blazor踩坑日记】1.关于图标的处理
前言 本系列文章,默认你已经踏上了MAUI Blazor的贼船,并且对MAUI Blazor有了一些了解,知道MAUI是什么,知道Blazor是什么. 不会教你怎么写MAUI Blazor的项目,只是 ...
- Lucene.Net -全文检索引擎
简介 Lucene.Net只是一个全文检索开发包,不是一个成型的搜索引擎,它的功能就是负责将文本数据按照某种分词算法进行切词,分词后的结果存储在索引库中,从索引库检索数据的速度灰常快 版本使用 3.0 ...
- Vortex Indicator 构建交易策略
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 今天的文章,我们将为大家介绍一个与DMI(Directional Movement Index)类似,判 ...
- wireshark 怎么过滤字符串 和 复制data中的可读文本
设置 首先点击,[捕获]下面的小放大镜 选择 分组字节流 - 窄(UTF-8/ASCII)- 字符串 (注意,要向选择字符串) 效果 复制报文中的可读数据 右键报文,复制,...as Printabl ...
- 深度系统安装wine
step1: 输入命令: sudo dpkg --add-architecture i386 step2: 1.切换成管理员权限: sudo su 2.打开源文件 vi /etc/apt/source ...