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')
注意:不支持把目录及其子文件复制到其子目录
最新文章
- ubuntu-14.04-server配置Jexus --安装步骤记录
- Spark中Lambda表达式的变量作用域
- Android 实现页面的延时跳转
- 微信公众平台中添加qq在线聊天代码
- css3内容持续更新ing
- VRP-Lua学习笔记
- 运行时报错 ADB server didn’t ACK
- SSIS 学习(0):企业离 BI 还有多远?【转】
- vim使用大全
- AVR ATMEGA8 串口USART
- Delhi 安装ocx的方法
- cal命令详解与练习
- Excel导入sq server后数据列以科学计数法显示
- mybatisnet轻量级ORM框架
- Cracking the Coding Interview(Stacks and Queues)
- zen cart global $db 这噶哒
- pthread_join
- html点小图看大图最快捷的方法
- VMware安装时Error 1324. The path My Documents contains a invalid character的原因和解决方法
- Cloudera: Start Impala service by cloudera manager in docker quickstart image
热门文章
- 机器学习入门 - Google的机器学习速成课程
- IndexedDB 简单封装
- css的direction属性
- 使用数组制作简易的用户管理系统【java】
- PowerDesigner使用方法
- leetcode — powx-n
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
- 线性表&;顺序线性表
- js_jquery_创建cookie有效期问题_时区问题
- [转]php hash_pbkdf2 和 node.js crypto.pbkdf2