python shutil 文件(夹)的复制、删除、移动、压缩和解压

高级的 文件、文件夹、压缩包 处理模块

shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中

import shutil

shutil.copyfileobj(open(‘old.xml‘,‘r‘), open(‘new.xml‘, ‘w‘))

shutil.copyfile(src, dst)
拷贝文件

shutil.copyfile(‘f1.log‘, ‘f2.log‘) #目标文件无需存在

shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变

shutil.copymode(‘f1.log‘, ‘f2.log‘) #目标文件必须存在

shutil.copystat(src, dst)
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

shutil.copystat(‘f1.log‘, ‘f2.log‘) #目标文件必须存在

shutil.copy(src, dst)
拷贝文件和权限

import shutil

shutil.copy(‘f1.log‘, ‘f2.log‘)

shutil.copy2(src, dst)
拷贝文件和状态信息

import shutil
shutil.copy2(‘f1.log‘, ‘f2.log‘)

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹

import shutil
shutil.copytree(‘folder1‘, ‘folder2‘, ignore=shutil.ignore_patterns(‘*.pyc‘, ‘tmp*‘)) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 

import shutil

shutil.copytree(‘f1‘, ‘f2‘, symlinks=True, ignore=shutil.ignore_patterns(‘*.pyc‘, ‘tmp*‘))

shutil.rmtree(path[, ignore_errors[, onerror]])
递归的去删除文件

import shutil
shutil.rmtree(‘folder1‘)

shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名。

import shutil
shutil.move(‘folder1‘, ‘folder3‘)

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak                       =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象

#将 /data 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("data_bak", ‘gztar‘, root_dir=‘/data‘)

#将 /data下的文件打包放置 /tmp/目录
import shutil
ret = shutil.make_archive("/tmp/data_bak", ‘gztar‘, root_dir=‘/data‘)

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

zipfile压缩解压缩
import zipfile

# 压缩
z = zipfile.ZipFile(‘laxi.zip‘, ‘w‘)
z.write(‘a.log‘)
z.write(‘data.data‘)
z.close()

# 解压
z = zipfile.ZipFile(‘laxi.zip‘, ‘r‘)
z.extractall(path=‘.‘)
z.close()

import tarfile

# 压缩
>>> t=tarfile.open(‘/tmp/egon.tar‘,‘w‘)
>>> t.add(‘/test1/a.py‘,arcname=‘a.bak‘)
>>> t.add(‘/test1/b.py‘,arcname=‘b.bak‘)
>>> t.close()

# 解压
>>> t=tarfile.open(‘/tmp/egon.tar‘,‘r‘)
>>> t.extractall(‘/egon‘)
>>> t.close()

tarfile压缩解压缩

原文地址:https://www.cnblogs.com/wt7018/p/12057094.html

时间: 2024-11-13 09:23:39

python shutil 文件(夹)的复制、删除、移动、压缩和解压的相关文章

C#操作文件、文件夹(复制、删除、新增、设置只读)-技术&分享

C#操作文件.文件夹(复制.删除.新增.设置只读)-技术&分享 using System; using System.IO; using System.Windows; using System.Windows.Documents; using System.Xml; namespace WorkItemCreateBussiness.HzClass { public class HzFile { /// <summary> /// 删除指定文件夹下的所有文件和子文件夹 /// <

linux下跨服务器文件文件夹的复制

文件的复制:scp –P (端口号) ./authorized_keys [email protected]:/home/berchina 文件夹的复制:scp -r -P (端口号) /home/berchina/hadoop-2.2.0 [email protected]:/home/berchina/ 注: 红色 字体是我敲击的命令 “#” 是注释语 [[email protected] server]# ftp 10.2.1.67     #登录服务器Connected to 10.2.

【转】Linux 文件夹文件创建与删除

[转自:Linux文件夹文件创建.删除 - 风生水起 - 博客园] 1. 删除文件夹 rm -rf  fileNamede> -删除文件夹实例:rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的 2. 删除文件de>rm -f  fileNamede>使用 rm -rf 的时候一定要格外小心,linux没有回收站的 3. Li

使用IO流对文件夹的复制(文件夹中带有子目录)

当我们要复制带有子目录的文件夹的时候,就必须使用递归,这样才能把全部的文件夹都复制到位 思路和步骤: 对于文件夹的复制,分2种情况               (1)当我们对文件进行遍历的时候,如果目标文件夹下的文件是个标准文件的话,我们就可以直接去做复制的动作,               (2)当目标文件中,是带有文件夹的文件,那么这个时候就需要对文件夹进行递归,直到最后它是个标准文件后,我们在做复制动作 有了上述的2种情况后,那么这个需求,需要提供2种方法,1是对标准文件的复制,2是对带有

【Python】Python对文件夹的操作

上一篇介绍了Python对文件的读写操作,现在来介绍一下Python对文件夹的操作.由于我是项目中用到的,所以我就以我的实际应用实例来说明吧.希望对大家有所帮助. 1.实例需求: 现在有一个文件夹myDir,该文件夹中又有n个文件夹dir1,Dir2, ..., dirN,每个文件夹中又有m个文件,这个实例需要达到的目的就是要将这n个文件夹dir1,Dir2, ..., dirN中的所有文件全部写到一个新文件中,该新文件在文件夹myDir下. 2.源代码: test.py代码如下: import

python 遍历文件夹 文件

python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirnames,filenames in os.walk(rootdir): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for dirname in dirnames: #输出文件夹信息 print "parent is:" + parent print &q

xp下删除windows7,无法删除windows7文件夹,无法删除windows7文件,双系统卸载,取得文件权限

http://blog.csdn.net/lanmanck/article/details/5722050 -------------------------------------------------- 找了比较久,这个强人写的,很佩服,贴出来共享: http://hi.baidu.com/wjg750926/blog/item/4046a84ab171d92b08f7ef27.html 一些网友在Xp 下安装了Windows 7(适用于Vista/WS2008) 双系统,试用一段时间之后

python 遍历文件夹文件代码

import os def tree(top): for path, names, fnames in os.walk(top): for fname in fnames: yield os.path.join(path, fname) for name in tree('C:\Users\XXX\Downloads\Test'): print name python 遍历文件夹文件代码

SVN服务器中可以删除文件夹但无法删除文件

SVN服务器中可以删除文件夹但无法删除文件:解决办法 找到任一台连接SVN的电脑客户端,然后打开TortoiseSVN Browser,打开以后输入正确的URL,如图所示: 输入正确的身份验证信息后,在文件目录中找到对应的文件 找到该文件,右键会出现X删除,直接删除即可. 出现该问题的原因:SVN不允许在服务器端删除客户端上传的单一文件,除非将整个工程删除.如果想要删除某个文件,只能通过URL访问到后,进行删除.