glob 与 shutil

glob 模块是最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 就像在 windows 下使用文件搜索功能一样, 查找文件只用到三个匹配符: *, ?, [], * 匹配 0 个或多个字符, ? 匹配单个字符, [] 匹配指定范围内的字符 (如 [0-9]匹配数字).

[TOC]

glob

glob.glob

返回所有匹配的文件路径列表, 它只有一个参数 pathname, 定义了文件路径匹配规则, 这里可以是绝对路径, 也可以是相对路径, 下面是使用 glob.glob 的例子:

import glob

# 获取指定目录下的所有图片
print glob.glob(r"E:\Picture\*\*.jpg")

# 获取上级目录的所有.py文件
print glob.glob(r'../*.py')  # 相对路径

glob.iglob

与 glob.glob 类似, 但它获取的是一个可迭代对象, 使用它可以逐个获取匹配的文件路径名 (类似 rang 与 xrang 的区别).

下面是一个简单的例子:

import glob
# 父目录中的.py文件
f = glob.iglob(r'../*.py')
print f  # <generator object iglob at 0x00B9FF80>

for py in f:
    print py

shutil

High-level file operations 高级的文件操作模块, 提供了一些易操作的文件移动复制打包压缩解压API.

API

功能

copyfileobj(fsrc, fdst[, length=16*1024])

copy 文件内容到另一个文件, 可以 copy 指定大小的内容

copyfile(src, dst)

copy 文件内容, 是不是感觉上面的文件复制很麻烦? 还需要自己手动用 open 函数打开文件, 在这里就不需要了, 事实上, copyfile 调用了 copyfileobj

copymode(src,dst)

仅 copy 权限, 不更改文件内容, 组和用户

copystat(src,dst)

复制所有的状态信息, 包括权限, 组, 用户, 时间等

copy(src,dst)

复制文件的内容以及权限, 先 copyfile 后 copymode

copy2(src,dst)

复制文件的内容以及文件的所有状态信息, 先 copyfile 后 copystat

copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,ignore_dangling_symlinks=False)

递归的复制文件内容及状态信息

rmtree(path, ignore_errors=False, onerror=None)

递归地删除文件

move(src, dst)

递归的移动文件

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)

压缩打包 base_name: 压缩打包后的文件名或者路径名 format: 压缩或者打包格式 "zip"、"tar"、"bztar"、"gztar" root_dir: 将哪个目录或者文件打包 (也就是源文件)

Last updated