Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
by:授客 QQ:1033553122
测试环境:
Python版本:Python 3.3.2
Win7 64
代码实践
#!/usr/bin/env/ python
#
-*- coding:utf-8 -*-
__author__
=
'shouke'
import
os
import
subprocess
#
复制文件或目录到指定目录(非自身目录)
def
copy_dir_or_file(src, dest):
if
not
os.path.exists(dest):
print('目标路径:%s
不存在'
% dest)
return
[False,
'目标路径:%s
不存在'
% dest]
elif
not
os.path.isdir(dest):
print('目标路径:%s
不为目录'
% dest)
return
[False,
'目标路径:%s
不为目录'
% dest]
elif
src.replace('/',
'\\').rstrip('\\')
== dest.replace('/',
'\\').rstrip('\\'):
print('源路径和目标路径相同,无需复制')
return
[True,'源路径和目标路径相同,不需要复制']
if
not
os.path.exists(src):
print('源路径:%s
不存在'
% src)
return
[False,
'源路径:%s
不存在'
% src]
#
/E 复制目录和子目录,包括空的 /Y 无需确认,自动覆盖已有文件
args
=
'xcopy /YE '
+ os.path.normpath(src) +
' '
+ os.path.normpath(dest)
# 注意:xcopy不支持 d:/xxx,只支持 d:\xxxx,所以要转换
try:
with
subprocess.Popen(args,
shell=True,
universal_newlines
=
True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
as
proc:
output
= proc.communicate()
print('复制文件操作输出:%s'
%
str(output))
if
not
output[1]:
print('复制目标文件|目录(%s)
到目标目录(%s)成功'
% (src, dest))
return
[True,'复制成功']
else:
print('复制目标文件|目录(%s)
到目标目录(%s)失败:%s'
% (src, dest, output[1]))
return
[False,'复制目标文件|目录(%s)
到目标目录(%s)失败:%s'
% (src, dest, output[1])]
except
Exception
as
e:
print('复制目标文件|目录(%s)
到目标目录(%s)失败 %s'
% (src, dest, e))
return
[False,
'复制目标文件|目录(%s) 到目标目录(%s)失败 %s'
% (src, dest, e)]
#
删除指定目录及其子目录下的所有子文件,不删除目录
def
delete_file(dirpath):
if
not
os.path.exists(dirpath):
print('要删除的目标路径:%s
不存在'
% dirpath)
return
[False,
'要删除的目标路径:%s
不存在'
% dirpath]
elif
not
os.path.isdir(dirpath):
print('要删除的目标路径:%s
不为目录'
% dirpath)
return
[False,
'要删除的目标路径:%s
不为目录'
% dirpath]
#
注意:同xcopy命令,del也不支持 d:/xxxx,Linux/Unix路径的写法,只支持d:\xxx
windows路径的写法
args
=
'del /F/S/Q '
+ os.path.normpath(dirpath)
#
/F 强制删除只读文件。 /S
删除所有子目录中的指定的文件。 /Q 安静模式。删除前,不要求确认
try:
with
subprocess.Popen(args,
shell=True,
universal_newlines
=
True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
as
proc:
output
= proc.communicate()
print('删除目标目录下的文件,操作输出:%s'
%
str(output))
if
not
output[1]:
print('删除目标目录(%s)下的文件成功'
% dirpath)
return
[True,'删除成功']
else:
print('删除目标目录(%s)下的文件失败:%s'
% (dirpath, output[1]))
return
[True,'删除目标目录(%s)下的文件失败:%s'
% (dirpath, output[1])]
except
Exception
as
e:
print('删除目标目录(%s)下的文失败:%s'
% (dirpath,e))
return
[False,
'删除目标目录(%s)下的文失败:%s'
% (dirpath,e)]
if
__name__ ==
'__main__':
copy_dir_or_file('D:\svn\myfolder\base'.replace('\b',
'/b'),'D:\svn\myfolder\dirname')
delete_file('D:\svn\myfolder\dirname\V8.3')
注意:不支持把目录及其子文件复制到其子目录
Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件的更多相关文章
- python递归列出目录及其子目录下所有文件
python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...
- linux下删除目录及其子目录下某种类型文件
Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令: find . -name "*.txt" -type f -print -e ...
- python实现复制整个目录的方法
import shutil #复制文件 shutil.copyfile('listfile.py', 'd:/test.py') #复制目录 shutil.copytree('d:/temp', 'c ...
- pthon 批量压缩当前目录,子目录下图片
需求 经常可能有需要压缩图片的需求. 但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片, 所以写下了这个图片处理程序: 需要安装: python 2.x Image模块 特点: 压缩当前目录, ...
- python查找目录及子目录下特定文件
写这篇博客的缘由: 面试归来翻脉脉发现一个陌生的朋友提出一个面试题,设计实现遍历目录及子目录,抓取.pyc文件. 并贴出两种实现方法: 个人感觉,这两种方法中规中矩,不像是python的风格.pyth ...
- Python——用os模块寻找指定目录(包括子目录)下所有图片文件
import os # 导入os模块 def search_file(start_dir): img_list = [] extend_name = ['.jpg', '.png', '.gif'] ...
- python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
#!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...
- 复制目录及其子目录下所有文件DOC
echo 开始同步代码 set src_home=F:\work\sign\Bonade-Sign set dest_home=F:\work\testGit\sign5\Bonade-Sign se ...
- python 列出出当前目录及所有子目录下的文件
[root@web1 test]# cat walk.py #!/usr/bin/python # -*- coding: UTF-8 -*- import os for root, dirs, fi ...
随机推荐
- Swift中空合运算符、闭区间运算符、单侧区间、半开区间
空合运算符(Nil Coalescing Operator) 用于取代3目判空运算,提供超短的写法比如常规判空写法如下,反正我写java就是这么干的 var anOptionalInt: Int? = ...
- js动态创建表单数据
var formData = new FormData(); formData.append("file",fileList[i]); formData.append(" ...
- 一道关于:ArrayList、Vector、LinkedList的存储性能和特性 的面试题
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢 ...
- sql server 性能调优之 资源等待内存瓶颈的三种等待类型
一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESO ...
- [Java Plasterer] Java Components 3:Java Enum
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. Written In The Font Whe ...
- Mysql加锁过程详解(6)-数据库隔离级别(1)
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- Jenkins入门之导航操作
通过前面章节讲解我们已经创建了构建任务,我们已经进入了三层目录,如何回到上一级界面?如何直接回到主界面?如何知道我当前所在的位置? 我们看一下红框框选的部分,为Jenkins导航树,从这个导航树,很多 ...
- Python面向对象基础:编码细节和注意事项
在前面,我用了3篇文章解释python的面向对象: 面向对象:从代码复用开始 面向对象:设置对象属性 类和对象的名称空间 本篇是第4篇,用一个完整的示例来解释面向对象的一些细节. 例子的模型是父类Em ...
- 巨杉数据库完成C轮数千万美元融资
业界领先的金融级分布式数据库公司,巨杉数据库近日宣布完成由嘉实投资领投的C轮融资.本轮的领投方为嘉实投资,启明创投与DCM作为早期投资方跟投. SequoiaDB巨杉数据库成立6年来一直坚持技术驱动产 ...
- MySQL系列详解三:MySQL中各类日志详解-技术流ken
前言 日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 .下面分别对他们进行介绍. 查询日志 1.查看查询日志变 ...