返回介绍

01. Python 工具

02. Python 基础

03. Numpy

04. Scipy

05. Python 进阶

06. Matplotlib

07. 使用其他语言进行扩展

08. 面向对象编程

09. Theano 基础

10. 有趣的第三方模块

11. 有用的工具

12. Pandas

shutil 模块:高级文件操作

发布于 2022-09-03 20:46:15 字数 4659 浏览 0 评论 0 收藏 0

In [1]:

import shutil
import os

shutilPython 中的高级文件操作模块。

复制文件

In [2]:

with open("test.file", "w") as f:
    pass

print "test.file" in os.listdir(os.curdir)
True

shutil.copy(src, dst) 将源文件复制到目标地址:

In [3]:

shutil.copy("test.file", "test.copy.file")

print "test.file" in os.listdir(os.curdir)
print "test.copy.file" in os.listdir(os.curdir)
True
True

如果目标地址中间的文件夹不存在则会报错:

In [4]:

try:
    shutil.copy("test.file", "my_test_dir/test.copy.file")
except IOError as msg:
    print msg
[Errno 2] No such file or directory: 'my_test_dir/test.copy.file'

另外的一个函数 shutil.copyfile(src, dst)shutil.copy 使用方法一致,不过只是简单复制文件的内容,并不会复制文件本身的读写可执行权限,而 shutil.copy 则是完全复制。

复制文件夹

将文件转移到 test_dir 文件夹:

In [5]:

os.renames("test.file", "test_dir/test.file")
os.renames("test.copy.file", "test_dir/test.copy.file")

使用 shutil.copytree 来复制文件夹:

In [6]:

shutil.copytree("test_dir/", "test_dir_copy/")

"test_dir_copy" in os.listdir(os.curdir)

Out[6]:

True

删除非空文件夹

os.removedirs 不能删除非空文件夹:

In [7]:

try:
    os.removedirs("test_dir_copy")
except Exception as msg:
    print msg
[Errno 39] Directory not empty: 'test_dir_copy'

使用 shutil.rmtree 来删除非空文件夹:

In [8]:

shutil.rmtree("test_dir_copy")

移动文件夹

shutil.move 可以整体移动文件夹,与 os.rename 功能差不多。

产生压缩文件

查看支持的压缩文件格式:

In [9]:

shutil.get_archive_formats()

Out[9]:

[('bztar', "bzip2'ed tar-file"),
 ('gztar', "gzip'ed tar-file"),
 ('tar', 'uncompressed tar file'),
 ('zip', 'ZIP file')]

产生压缩文件:

shutil.make_archive(basename, format, root_dir)

In [10]:

shutil.make_archive("test_archive", "zip", "test_dir/")

Out[10]:

'/home/lijin/notes-python/11\. useful tools/test_archive.zip'

清理生成的文件和文件夹:

In [11]:

os.remove("test_archive.zip")
shutil.rmtree("test_dir/")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文