python中shutil模块常用的功能

shutil.copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉

shutil.move( src, dst)  移动文件或重命名

shutil.copymode( src, dst) 只是会复制其权限其他的东西是不会被复制的

shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间

shutil.copy( src, dst)  复制一个文件到一个文件或一个目录

shutil.copy2( src, dst)  在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西

shutil.copy2( src, dst)  如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作

shutil.copytree( olddir, newdir, True/Flase)

把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接

shutil.rmtree( src ) 递归删除一个目录以及目录内的所有内容





作者越努力越幸运_2528


1shutilshell

utility的缩写

shutil.move直接从一个地方挪到另一个地方,而os.rename常常只能重命名,不能挪动位置。

功能是:

>>>shutil.move('old.txt',r'c:datarchive')

>>>shutil.copy('old.txt',r'c:datarchive')

>>>os.remove('junk.dat')

2、高级文件操作(拷贝/移动/压缩/解压缩)

#!/usr/bin/env python

# coding=utf-8

__author__ ='zhuo'

__date__ ='2017/5/25'

# shutil_demo.py高级文件操作(拷贝/移动/压缩/解压缩)

importshutil

defshutil_demo():

#拷贝文件

shutil.copy2('file.txt','temp.txt')

#拷贝目录

shutil.copytree("root","temp", symlinks=False,

ignore=shutil.ignore_patterns("*.pyc"), copy_function=shutil.copy2, ignore_dangling_symlinks=True)

#删除目录

shutil.rmtree("temp", ignore_errors=True)

#移动文件/目录

shutil.move("root","temp",copy_function=shutil.copy2)

#获取磁盘使用空间

total, used, free =shutil.disk_usage(".")

print("当前磁盘共:

%iGB,已使用: %iGB,剩余:

%iGB"%(total

/1073741824, used /1073741824, free /1073741824))

#压缩文件

shutil.make_archive('Box','zip','temp')

#解压文件

shutil.unpack_archive('Box.zip')

defshutil_func():

#文件和目录操作

# shutil.copyfileobj(fsrc, fdst[,

length]) //拷贝文件内容,将fsrc文件里的内容copy到fdst文件中, length:缓冲区大小

shutil.copyfileobj(open('file.txt','r'), open('temp.txt','w'))

# shutil.copyfile(src, dst, *,

follow_symlinks=True) //拷贝文件内容,同copyfileobj,如果dst=src,抛SameFileError异常, dst存在则替换

dst = shutil.copyfile('file.txt','temp.txt')

# shutil.copymode(src, dst, *,

follow_symlinks=True) //仅拷贝权限,其他信息不受影响

shutil.copymode('file.txt','temp.txt')

# shutil.copystat(src, dst, *,

follow_symlinks=True) //拷贝状态(权限/最后访问时间/上次修改时间/标志),其他不受迎影响

shutil.copystat('file.txt','temp.txt')

# shutil.copy(src, dst, *,

follow_symlinks=True) //拷贝文件(数据/权限)

dst = shutil.copy('file.txt','temp.txt')

# shutil.copy2(src, dst, *,

follow_symlinks=True) //拷贝文件(尝试保留所有元数据) (不能拷贝创建时间,该时间可通过修改系统时间再创建文件来实现)

dst = shutil.copy2('file.txt','temp.txt')

# shutil.ignore_patterns(*patterns)

# symlinks:True(复制链接) / False(复制文件),

ignore=ignore_patterns("") //忽略的文件,

copy_function=自定义复制函数,

ignore_dangling_symlinks:True(忽略文件不存在异常) / False(错误列表中添加异常)

# shutil.copytree(src, dst,

symlinks=False, ignore=None, copy_function=copy2,

ignore_dangling_symlinks=False) //递归的复制根目录下的整个目录树

dst = shutil.copytree("root","temp", symlinks=False,

ignore=shutil.ignore_patterns("*.pyc"), copy_function=shutil.copy2,

ignore_dangling_symlinks=True)

# shutil.rmtree(path,

ignore_errors=False, onerror=None) //删除整个目录树, ignore_errors:是否忽略删除失败错误, onerror=def

error(func, path, excinfo)

shutil.rmtree("temp", ignore_errors=True)

# shutil.move(src, dst, copy_function=copy2)

//递归移动文件/目录,目录存在则移动目录,文件存在则覆盖

dst = shutil.move("root","temp",copy_function=shutil.copy2)

total, used, free =shutil.disk_usage(".")#给定路径的磁盘使用情况统计信息

# shutil.chown(path, user=None,

group=None) //修改用户和组(Unix可用)

# shutil.which(cmd, mode=os.F_OK |

os.X_OK, path=None) //可执行文件路径, path:要查找的路径,未指定使用os.environ的结果

path_str = shutil.which("python")

#异常

try:pass

exceptshutil.SameFileError:pass# copyfile()时,源和目录是同一个文件时,抛此异常

exceptshutil.Error:pass# copytree()时,多文件操作时引发的异常,异常包含(srcname, dstname, excinfo)

#压缩文件操作(封装了zipfile / tarfile)

#创建归档文件base_name:压缩包文件名, format:格式zip / tar / bztar / xztar / gztar, root_dir:被归档的根目录(默认当前目录)

# base_dir:保存归档文件的目录(默认当前目录)

verbose:已弃用dry_run:True(不创建归档,但记录日志),

owner:用户, group:用户组, logger:日志

# shutil.make_archive(base_name,

format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[,

logger]]]]]]])

dst = shutil.make_archive('Box','zip','temp')#注意:root_dir /

base_dir至少写一个,不然会造成压缩包再次被打包的情况

#分拆归档,

filename:文件名, extract_dir:解压到目录(默认当前目录),

format:格式(未提供,根据扩展名查找,未找到引发ValueError)

# shutil.unpack_archive(filename[,

extract_dir[, format]])

shutil.unpack_archive('Box.zip')

lists =shutil.get_archive_formats()#返回支持的归档格式列表[(format, info)]

lists =shutil.get_unpack_formats()#返回所有注册格式的列表[(name, extensions, description)]

#注册压缩格式,

name:格式名, function:def func(base_name, base_dir,

owner, group, dry_run, logger), extra_args:额外参数,

description:说明信息

# shutil.register_archive_format(name,

function[, extra_args[, description]])

# shutil.unregister_archive_format(name)

//注销压缩格式

#注册解压格式name:格式名, extensions:扩展名列表, function:实现函数def unpack(filename, extract_dir),

extra_args:额外参数(name, value),

description:说明

# shutil.register_unpack_format(name,

extensions, function[, extra_args[, description]])

# shutil.unregister_unpack_format(name)

//注销解压格式

#终端

#

shutil.get_terminal_size(fallback=(columns, lines))

columns, lines = shutil.get_terminal_size()#查询终端大小(宽,高),无法查询返回默认大小(80, 24)

if__name__ =="__main__":

shutil_demo()

# shutil_func()




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容