16.1. os
-复杂的操作系统接口
Source code: Lib/os.py
该模块提供了使用操作系统相关功能的便携式方法。 如果您只想读或写一个文件,请参阅open()
,如果要操作路径,请参阅os.path
模块,如果要读取命令行中所有文件中的所有行,请参阅fileinput
模块。 要创建临时文件和目录,请参阅tempfile
模块,对于高级文件和目录处理,请参阅shutil
模块。
有关这些功能的可用性的注意事项:
1.Python的所有内置操作系统依赖模块的设计是这样的,只要相同的功能可用,它使用相同的接口; 例如,函数os.stat(path)以相同的格式返回关于路径的统计信息(这恰好是由POSIX接口发起的)。
2.特定操作系统特有的扩展也可通过os模块获得,但使用它们当然是对可移植性的威胁。
3.接受路径或文件名的所有功能都接受字节和字符串对象,如果返回路径或文件名,则会导致一个相同类型的对象。
4.“可用性:Unix”注意意味着此功能通常在Unix系统上找到。 它没有对其在特定操作系统上的存在提出任何声明。
5.如果没有单独注释,则在Mac OS X上支持所有声明“可用性:Unix”的功能,这些功能基于Unix内核。
注意
在无效或不可访问的文件名和路径或其他具有正确类型但不被操作系统接受的参数的情况下,此模块中的所有功能都会引发OSError。
exception os.
error
内置OSError异常的别名
os.
name
导入操作系统依赖模块的名称。 以下名称目前已注册:'posix','int','java'
也可以看看
sys.platform具有更精细的粒度。 os.uname()提供与系统相关的版本信息。
平台模块提供对系统身份的详细检查。
16.1.1. 文件名,命令行参数和环境变量
在Python中,使用字符串类型表示文件名,命令行参数和环境变量。 在某些系统上,将这些字符串解码为字节是必要的,然后再将它们传递到操作系统。 Python使用文件系统编码来执行此转换(请参见sys.getfilesystemencoding()
)。
在版本3.1中更改:在某些系统上,使用文件系统编码的转换可能会失败。 在这种情况下,Python使用代理代码编码错误处理程序,这意味着在解码时不可编码的字节由Unicode字符U + DCxx替代,并且这些字节在编码时再次转换为原始字节。
文件系统编码必须保证成功解码低于128的所有字节。如果文件系统编码无法提供此保证,API函数可能会引发UnicodeError。
16.1.2. 进程参数
这些功能和数据项提供信息并对当前进程和用户进行操作。
os.
ctermid
()
返回与进程的控制终端对应的文件名。
可用性:Unix。
os.
environ
表示字符串环境的映射对象。 例如,environ ['HOME']是您的主目录的路径名(在某些平台上),相当于C中的getenv(“HOME”)。
作为处理site.py的一部分,通常在Python启动期间第一次导入os模块时的映射。 在这个时间之后做出的环境变化并没有体现在os.environ中,除了直接修改os.environ所做的更改外,
如果平台支持putenv()函数,则可以使用此映射来修改环境以及查询环境。 当映射被修改时,putenv()将被自动调用。
在Unix上,键和值使用sys.getfilesystemencoding()和'surrogateescape'错误处理程序。 如果您想使用其他编码,请使用environb。
注意
调用putenv()直接不改变os.environ,所以最好修改os.environ。
注意
在某些平台上,包括FreeBSD和Mac OS X,设置环境可能会导致内存泄漏。 请参阅putenv()的系统文档。
如果没有提供putenv(),则可以将此映射的修改副本传递给适当的进程创建函数,以使子进程使用修改的环境。
如果平台支持unsetenv()函数,则可以删除此映射中的项以取消设置环境变量。 当一个项目从os.environ中删除,当pop()或clear()方法之一被调用时,将自动调用unsetenv()。