我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python内置模块~shutil

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python内置模块~shutil

--High-level file operations,高级的文件操作模块~
shutil 模块的使用主要包括对文件及目录的移动、复制、打包、压缩(解压)、删除等操作。是对os模块的一个补充~

shutil.copyfileobj(fclass="lazy" data-src, fdst[, length])

复制一个文件到另一个文件。
 
copyfileobj函数源码:

def copyfileobj(fclass="lazy" data-src, fdst, length=16*1024):
    """copy data from file-like object fclass="lazy" data-src to file-like object fdst"""
    while 1:
        buf = fclass="lazy" data-src.read(length)     # length 为缓冲大小
        if not buf:
            break
        fdst.write(buf)

示例:

import shutil

f_read = open(file='/Users/luyi/tmp/a.txt', mode='r')
f_write = open(file='/Users/luyi/tmp/b.txt', mode='w')

shutil.copyfileobj(f_read, f_write)

使用 copyfileobj 进行复制略显麻烦,源文件和目标文件都需要打开(open)才能进行复制操作~

shutil.copyfile(class="lazy" data-src, dst)

同样是复制操作~
 
示例:

import shutil

f_class="lazy" data-src = '/Users/luyi/tmp/a.txt'
f_dest = '/Users/luyi/tmp/b.txt'
shutil.copyfile(f_class="lazy" data-src, f_dest)

相比于 copyfileobj,copyfile 实现的复制操作要简单的多,在日常的使用中,也是更多的使用 copyfile 函数。其实在内部,copyfile 函数调用了 copyfileobj函数~

shutil.copymode(class="lazy" data-src, dst)

复制文件的权限,即读写权限,不会复制源文件的内容及属主和属组~

示例:

➜  ls -l
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-r--r--  1 root  wheel  4 Nov  7 22:46 b.txt

>>> import shutil
>>> shutil.copymode('a.txt','b.txt')

➜ ls -l
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-rw-r--  1 root  wheel  4 Nov  7 22:46 b.txt

复制权限的过程,源文件和目标文件都必须存在,若目标文件不存在,则会报错。这里区别于 copyfile 函数,copyfile函数的目标文件可以存在也可以不存在,不存在则直接进行复制,若存在则进行覆盖~

➜  tmp ll
total 8
-rw-r--r--  1 baby  staff     4B Nov  6 23:48 a.txt

>>> import shutil
>>> shutil.copymode('a.txt','b.txt')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 91, in copymode
    os.chmod(dst, mode)
OSError: [Errno 2] No such file or directory: 'b.txt'

shutil.copystat(class="lazy" data-src, dst)

复制文件的所有状态信息,包括 mode bits,atime,mtime,flags,但不复制文件内容,以及文件的属主和属组~

➜ ls -l
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-r--r--  1 root  wheel  4 Nov  7 22:50 b.txt
➜ stat a.txt 
16777220 8603112152 -rw-rw-r-- 1 baby wheel 0 4 "Nov  7 22:48:16 2018" "Nov  7 22:46:22 2018" "Nov  7 22:46:46 2018" "Nov  7 22:46:06 2018" 4096 8 0 a.txt
➜ stat b.txt 
16777220 8603112261 -rw-r--r-- 1 root wheel 0 4 "Nov  7 22:50:32 2018" "Nov  7 22:50:37 2018" "Nov  7 22:50:37 2018" "Nov  7 22:50:32 2018" 4096 8 0 b.txt

>>> import shutil
>>> shutil.copystat('a.txt','b.txt')     # 执行复制状态操作

stat 输出的信息中包含3个时间,其中第一个是atime,第二个是mtime,最后一个是ctime。复制完成后,查看两个文件的状态信息:

➜ ls -l
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-rw-r--  1 root  wheel  4 Nov  7 22:46 b.txt
➜ stat a.txt 
16777220 8603112152 -rw-rw-r-- 1 baby wheel 0 4 "Nov  7 22:48:16 2018" "Nov  7 22:46:22 2018" "Nov  7 22:46:46 2018" "Nov  7 22:46:06 2018" 4096 8 0 a.txt
➜ stat b.txt 
16777220 8603112261 -rw-rw-r-- 1 root wheel 0 4 "Nov  7 22:48:16 2018" "Nov  7 22:46:22 2018" "Nov  7 22:52:02 2018" "Nov  7 22:46:22 2018" 4096 8 0 b.txt

可以看到源文件 a.txt 的 atime,mtime 和 mode bits 已经复制到 b.txt 上,文件的属主和属组 并没有发生变化。其中文件的 ctime 由系统自行维护~

shutil.copy(class="lazy" data-src, dst)

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

shutil.copy2(class="lazy" data-src, dst)

复制文件的内容以及文件的状态信息,先 copyfile,再 copystat~

shutil.copytree(class="lazy" data-src, dst, symlinks=False, ignore=None)

递归的复制目录,以及文件的所有状态信息(不包括文件的属主和属组)
示例:

➜  ls -l test1
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-r--r--  1 root  wheel  4 Nov  7 22:56 b.txt

>>> import shutil
>>> shutil.copytree('test1', 'test2')
'test2'

➜  ls -l test2
total 16
-rw-rw-r--  1 root  wheel  4 Nov  7 22:46 a.txt
-rw-r--r--  1 root  wheel  4 Nov  7 22:56 b.txt

shutil.rmtree(path[, ignore_errors[, onerror]])

递归的删除文件~
示例:

➜ ls -l test1
total 16
-rw-rw-r--  1 baby  wheel  4 Nov  7 22:46 a.txt
-rw-r--r--  1 root  wheel  4 Nov  7 22:56 b.txt

>>> import shutil
>>> shutil.rmtree('test1')

rmtree相当于 rm -fr 命令,谨慎操作~

shutil.move(class="lazy" data-src, dst)

递归的移动文件,作用与通过move命令移动目录类似~
示例:

➜  tmp ll
total 0
drwxr-xr-x  4 baby  staff   128B Nov  7 23:09 test

>>> import shutil
>>> shutil.move('test','/Users/luyi')
'/Users/luyi/test'

➜  tmp ll /Users/luyi/test   
total 16
-rw-r--r--  1 baby  staff     4B Nov  6 23:48 a.txt
-rw-r--r--  1 baby  staff     4B Nov  7 23:06 b.txt

shutil.make_archive(base_name, format,root_dir=None,...)

打包或压缩文件,并且返回操作后的文件路径~
 
参数说明:
  base_name:压缩包的文件名(abc.tar.gz,则base_name为abc),也可以是绝对路径;若是文件名,则压缩后的文件默认存放于当前目录,若是绝对路径,则压缩有的文件就保存到指定路径~
  format:指定压缩或打包的类型,"zip","tar","bztar","gztar"
  root_dir:需要压缩的文件或目录路径
  owner:属主,默认为当前用户
  group:属组,默认为当前组
  logger:指定日志对象,通常是logging.Logger对象~
 
示例:

➜  tmp ll
total 0
drwxr-xr-x  4 baby  staff   128B Nov  7 23:09 test

>>> import shutil
>>> shutil.make_archive(base_name='test',format='zip',root_dir='test')
'/Users/luyi/tmp/test.zip'
>>> shutil.make_archive(base_name='test',format='gztar',root_dir='test')
'/Users/luyi/tmp/test.tar.gz'
>>> shutil.make_archive(base_name='test',format='tar',root_dir='test')
'/Users/luyi/tmp/test.tar'
>>> shutil.make_archive(base_name='test',format='bztar',root_dir='test')
'/Users/luyi/tmp/test.tar.bz2'

➜  tmp ll
total 48
drwxr-xr-x  4 baby  staff   128B Nov  7 23:09 test
-rw-r--r--  1 baby  staff    10K Nov  7 23:25 test.tar
-rw-r--r--  1 baby  staff   187B Nov  7 23:25 test.tar.bz2
-rw-r--r--  1 baby  staff   195B Nov  7 23:25 test.tar.gz
-rw-r--r--  1 baby  staff   206B Nov  7 23:25 test.zip

.................^_^

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python内置模块~shutil

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python内置模块~shutil

--High-level file operations,高级的文件操作模块~shutil 模块的使用主要包括对文件及目录的移动、复制、打包、压缩(解压)、删除等操作。是对os模块的一个补充~shutil.copyfileobj(fsrc,
2023-01-31

python shutil模块

高级的 文件、文件夹、压缩包 处理模块shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中,可以部分内容test.txt是一个已经存在的文件,复制一份到test1.txtimports
2023-01-30

python模块之shutil

shutil模块提供了一些针对文件和目录的高级操作,主要是拷贝、移动。对于单个文件的操作,还可参考os模块Warning:即使是高级别的拷贝函数(shutil.copy(),shutil.copy2())也不能拷贝所有的文件元数据。意思是:
2023-01-31

Python 之 shutil模块

shutil模块用于执行高级的文件操作,如复制,移动重命名等。>>> shutil.shutil.Error shutil._samefileshutil.__all__ shutil.abspa
2023-01-31

python之shutil模块

shutil:高级的 文件、文件夹、压缩包 处理模块shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容)将文件内容拷贝到另一个文件中import shutilshut
2023-01-30

shutil模块

目录 shutil模块(了解) zipfile压缩解压缩 tarfile压缩解压缩 高级的文件、文件夹、压缩包处理模块。import s
2023-01-31

python shutil模块总结

shutil.copyfile(src,dst)复制文件,如果存在会覆盖copymode( src, dst)复制权限copystat(src, dst)复制访问时间和修改时间和权限copy(src, dst) 复制文件到一个目录copy2
2023-01-31

Python shutil模块(目录和文

import shutil #导入shutil模块copyfileobj方法将类文件对象fsrc的内容复制到类文件对象fdstshutil.copyfileobj(fsrc, fdst[, length]) 我一般的用法:shutil.c
2023-01-30

Python中os模块和shutil模块的示例分析

这篇文章将为大家详细讲解有关Python中os模块和shutil模块的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth
2023-06-06

python shutil模块怎么操作文件

这篇文章主要讲解了“python shutil模块怎么操作文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python shutil模块怎么操作文件”吧!1、复制文件和文件夹,调用 shu
2023-06-30

python 内置模块

一.random模块  随机        random()    随机小数            uninform(a,b) 随机小数randint(a,b)  随机整数choice() 随机选择一个sample() 随机选择多个 shu
2023-01-30

Python中shutil模块怎么使用

这篇文章主要讲解了“Python中shutil模块怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中shutil模块怎么使用”吧!简介:shutil 模块提供了一系列对文件
2023-06-28

python模块shutil函数怎么用

小编给大家分享一下python模块shutil函数怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!本文大纲os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作。而Python另外一个标准库
2023-06-25

python 内置模块collectio

1、namedtuplefrom collections import namedtuplewebsites = [('Sohu', 'http://www.google.com/', u'张朝阳'),('Sina', 'http://ww
2023-01-31

shutil模块有什么用

这篇文章主要讲解了“shutil模块有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shutil模块有什么用”吧!shutil模块import shutil f1 = open("he
2023-06-04

Python中shutil模块的学习笔记教程

介绍 shutil 名字来源于 shell utilities,有学习或了解过Linux的人应该都对 shell 不陌生,可以借此来记忆模块的名称。该模块拥有许多文件(夹)操作的功能,包括复制、移动、重命名、删除等等 一、chutil.co
2022-06-04

python常见的内置模块

内置模块python内部提供的功能导入模块后,直接使用即可一、 random随机数模块randint:得到一个随机数import random # 导入一个模块 v = random.randint(起始,终止) # 得到一个随
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录