File and Directory Access

os 模块提供依赖于操作系统的功能的可移植方式

listdir(path)

返回目录 path 中条目名称的列表. 不包含 . 和 .. 特殊条目.

os.path.abspath

获取绝对路径:

import os
LOGSEE_ROOT = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = (
    os.path.join(LOGSEE_ROOT, 'templates'),
)

split路径和文件名

os.path.split()

>>> absp = os.path.abspath(__init__.__file__)
>>> os.path.split(absp)
('/home/green/src/djangolrn', '__init__.pyc')

os.curdir

常量字符串, 操作系统用这个常量表示当前目录. 对 Windows 和 POSIX 是 ‘.’

os.path.basename

返回一个路径的最后一部分.

>>> os.path.basename(os.getcwd())
'djangolrn'
>>> os.path.basename('/tmp/test.py')
'test.py'

os.path.splitext

从一个路径中去除扩展名. 也就是去除最后一个点号到结尾部分. 可以用来从 module.py 获取模块名 module

os.path.normpath(path)

规范化路径名, 即去掉多余的分隔符和上一级引用. A//B, A/B/, A/./B and A/foo/../B all 都会变成 A/B. 它不规范大小写(可以使用 normcase ). 在 Windows 上转换斜线为反斜线. 注意, 如果 path 包含符号链接, normpath 可能会改变路径的意义.

os.path.isdir(path)

如果 path 是一个存在的路径, 返回 True

os.path.isabs(path)

判断 path 是否是绝对路径. 在 Linux 下意味着 path 以 / 开头; 在 Win 下以盘符+冒号开头.

os.getcwd()

获取当前路径.

os.walk

遍历目录树, 对其中的每一个目录(除了 ‘.’ 和 ‘..’), yield 一个三元组: dirpath, dirnames, filename. 在 python 2.6 版本后增加了一个 followlinks 选项表示是否追踪 symlinks, 默认为 False; 2.6 以前版本不能追踪 symlinks.

os.mkdir(path[, mode])

mode 是数值模式, 默认是8进制的 0777. 使用时首先会屏蔽掉 umask, 所以如果希望不屏蔽 umask, 需要再执行 os.chmod:

os.mkdir(root, 0777)
os.chmod(root, 0777) # because of umask

如果 path 已经存在, 抛 OSError.

os.makedirs recursive directory creation function.

shutil.rmtree

删除整个目录树