Python标准库之shutil模块
高级的文件、文件夹、压缩包处理模块。
文件复制
copyfileobj
将文件类对象 fsrc 的内容拷贝到文件类对象 fdst。
shutil.copyfileobj(fsrc, fdst[, length])
代码演示:
import shutil f1 = open("test.txt",'r') f2 = open("white.txt",'w') shutil.copyfileobj(f1,f2)
copyfile
将名为 src 的文件的内容(不包括元数据)拷贝到名为 dst 的文件并以尽可能高效的方式返回 dst。 src 和 dst 均为路径类对象或以字符串形式给出的路径名。
shutil.copyfile(src, dst, *, follow_symlinks=True)
代码演示:
shutil.copyfile("white.txt","test.txt")
copymode
仅拷贝权限。内容、组、用户不变。
从 src 拷贝权限位到 dst。 文件的内容、所有者和分组将不受影响。 src 和 dst 均为路径类对象或字符串形式的路径名。
shutil.copymode(src, dst, *, follow_symlinks=True)
copystat
从 src 拷贝权限位、最近访问时间、最近修改时间以及旗标到 dst。 在 Linux上,copystat() 还会在可能的情况下拷贝“扩展属性”。 文件的内容、所有者和分组将不受影响。 src 和 dst 均为路径类对象或字符串形式的路径名。没拷贝文件!!
shutil.copystat(src, dst, *, follow_symlinks=True)
copy
拷贝文件和权限。
将文件 src 拷贝到文件或目录 dst。 src 和 dst 应为字符串。 如果 dst 指定了一个目录,文件将使用 src 中的基准文件名拷贝到 dst。 返回新创建文件的路径。
shutil.copy(src, dst, *, follow_symlinks=True)
copy2
拷贝文件和文件状态。
shutil.copy2(src, dst, *, follow_symlinks=True)
目录复制与删除
copytree
递归地去拷贝目录。
将以 src 为根起点的整个目录树拷贝到名为 dst 的目录并返回目标目录。 dirs_exist_ok 指明是否要在 dst 或任何丢失的父目录已存在的情况下引发异常。
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)
rmtree
递归删除目录。
删除一个完整的目录树;path 必须指向一个目录(但不能是一个目录的符号链接)。
shutil.rmtree(path, ignore_errors=False, onerror=None)
move
递归地将一个文件或目录 (src) 移至另一位置 (dst) 并返回目标位置。如果目标是已存在的目录,则 src 会被移至该目录下。
shutil.move(src, dst, copy_function=copy2)
归档操作
make_archive
创建压缩包并返回文件路径,如zip、tar。
shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
base_name 是要创建的文件名称,包括路径,去除任何特定格式的扩展名。 format 是归档格式:为 "zip" (如果 zlib 模块可用), "tar", "gztar" (如果 zlib 模块可用), "bztar" (如果 bz2 模块可用) 或 "xztar" (如果 lzma 模块可用) 中的一个。
root_dir 是一个目录,它将作为归档文件的根目录;例如,我们通常会在创建归档文件之前用 chdir 命令切换到 root_dir。
base_dir 是我们要执行归档的起始目录;也就是说 base_dir 将成为归档文件中所有文件和目录共有的路径前缀。
import shutil shutil.make_archive("new.zip","zip",r"C:/Users/admin/PycharmProjects/shodan/module/")