本文实例讲述了Python实现拷贝 删除文件夹的方法。分享给大家供大家参考,具体如下:
1. 拷贝文件夹
from shutil import copytree, ignore_patterns
copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
注:shutil.copytree实现
def copytree(src, dst, symlinks=False, ignore=None):
names = os.listdir(src)
if ignore is not None:
ignored_names = ignore(src, names)
else:
ignored_names = set()
os.makedirs(dst)
errors = []
for name in names:
if name in ignored_names:
continue
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks, ignore)
else:
copy2(srcname, dstname)
# XXX What about devices, sockets etc."htmlcode">
#! /usr/bash/python
# encoding:utf-8
import os
import os.path
import stat
import shutil
class DelDir:
''' 删除指定根目录下特定文件夹 '''
def __init__(self, root, dirname):
self.root = root
self.dirname = dirname
def run(self):
for r, dirs, files in os.walk(self.root):
if self.dirname in dirs:
srcDir = os.path.join(r, self.dirname)
#更改权限(win7会出现权限问题)
os.chmod(srcDir, stat.S_IREAD | stat.S_IWRITE)
result = shutil.rmtree(srcDir, False, self.__handler)
print "%s" %(srcDir)
def __handler(self, function, path, excinfo):
''' 删除出错处理 '''
#更改权限(win7会出现权限问题)
os.chmod(path, stat.S_IREAD | stat.S_IWRITE)
function(path)
print "[Handler] ==> Path:%s \n\tHandler the Error: %s" %(path, excinfo)
if __name__ == '__main__':
rootdir = r"E:\workspace\minioffice\mini-core\src\main\webapp" # 需要处理的文件夹
rootdir = unicode(rootdir, "utf8")
dirname = ".svn" # 删除的文件夹
c = DelDir(rootdir, dirname)
c.run()
Python实现文件夹递归拷贝
目标:
1.多层文件夹嵌套,在要备份的文件夹中嵌套多个文件夹
2.增量备份,因为文件较多,且之前已有部分备份,所以只需对新增的文件进行备份,提升效率
Python安装:
1.下载安装包,http://www.python.org/getit/,可以选择Python2或3,2的兼容性更好
2.添加Python安装目录如D:\Program\Python到环境变量Path中
编写脚本:
Python中自身有文件夹拷贝的API,但有诸多限制,不能满足需求,所以自己实现
要点有两个:
1.递归拷贝,因为有多层嵌套文件夹,所以用递归实现
2.错误处理,要考虑文件夹不存在的情况
脚本如下:
###################################################### -*- coding: GBK -*-
# 文件自动备份脚本
# 作者:阿凡提
import os
import shutil
# 设置待备份的源文件夹及存放备份文件的目标文件夹
srcDir = "f:\\src"
dstDir = "f:\\dst"
# 目录递归拷贝函数
def dir_copyTree(src, dst):
names = os.listdir(src)
# 目标文件夹不存在,则新建
if not os.path.exists(dst):
os.mkdir(dst)
# 遍历源文件夹中的文件与文件夹
for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
# 是文件夹则递归调用本拷贝函数,否则直接拷贝文件
if os.path.isdir(srcname):
dir_copyTree(srcname, dstname)
else:
if (not os.path.exists(dstname)
or ((os.path.exists(dstname))
and (os.path.getsize(dstname) != os.path.getsize(srcname)))):
print dstname
shutil.copy2(srcname, dst)
except:
error.traceback();
raise
# 备份函数
def dir_backup():
global srcDir
global dstDir
print "源文件夹" + srcDir
print "目标文件夹" + dstDir
print "本次拷贝文件:"
dir_copyTree(srcDir, dstDir)
# 将此句注释则会一闪而过,方便自动备份
raw_input ("备份完成")
# 执行备份函数
dir_backup()
#####################################################
结合Windows的任务计划程序定时运行此脚本,即可实现自动备份的目的。
python 文件夹复制加强版
shutil模块主要用于文件夹的操作。其中copytree用来对文件夹进行复制,但是比较遗憾的是,如果目标文件已经存在的话,该函数就会报错抛异常了,非常地不给力。求人不如求已,看到帮助文档中有此方法的源码,就修改了一下,使其默认可以支持文件和文件夹的覆盖。
import os
import os.path
import shutil
def copytree(src, dst, symlinks=False):
names = os.listdir(src)
if not os.path.isdir(dst):
os.makedirs(dst)
errors = []
for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks)
else:
if os.path.isdir(dstname):
os.rmdir(dstname)
elif os.path.isfile(dstname):
os.remove(dstname)
shutil.copy2(srcname, dstname)
# XXX What about devices, sockets etc."_blank" href="//www.jb51.net/Special/516.htm">Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]