Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件

简介: Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件

文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件


测试环境:

Python版本:Python3.3.2

Win7 64


代码实践

 

#!/usr/bin/env/ python
# -*- coding:utf-8 -*-

__author__ ='shouke'

importos
import  subprocess

# 复制文件或目录到指定目录(非自身目录)
defcopy_dir_or_file(src, dest):
   if notos.path.exists(dest):
       print('目标路径:%s不存在'% dest)
       return  [False,'目标路径:%s不存在'% dest]
   elif notos.path.isdir(dest):
       print('目标路径:%s不为目录'% dest)
       return   [False,'目标路径:%s不为目录'% dest]
   elifsrc.replace('/','\\').rstrip('\\') == dest.replace('/','\\').rstrip('\\'):
       print('源路径和目标路径相同,无需复制')
       return[True,'源路径和目标路径相同,不需要复制']

   if notos.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:
       withsubprocess.Popen(args,shell=True,universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)asproc:
           output = proc.communicate()
           print('复制文件操作输出:%s'%str(output))
           if notoutput[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])]
   exceptExceptionase:
       print('复制目标文件|目录(%s)到目标目录(%s)失败%s'% (src, dest, e))
       return  [False,'复制目标文件|目录(%s)到目标目录(%s)失败%s'% (src, dest, e)]

# 删除指定目录及其子目录下的所有子文件,不删除目录
defdelete_file(dirpath):
   if notos.path.exists(dirpath):
       print('要删除的目标路径:%s不存在'% dirpath)
       return  [False,'要删除的目标路径:%s不存在'% dirpath]
   elif notos.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:
       withsubprocess.Popen(args,shell=True,universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)asproc:
           output = proc.communicate()
           print('删除目标目录下的文件,操作输出:%s'%str(output))
           if notoutput[1]:
               print('删除目标目录(%s)下的文件成功'% dirpath)
               return[True,'删除成功']
           else:
               print('删除目标目录(%s)下的文件失败:%s'% (dirpath, output[1]))
               return[True,'删除目标目录(%s)下的文件失败:%s'% (dirpath, output[1])]
   exceptExceptionase:
       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')

 

注意:不支持把目录及其子文件复制到其子目录

 

目录
相关文章
|
4天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
15 2
|
29天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
10天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
21 2
|
11天前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
23 3
|
12天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
15 2
|
17天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
18 3
|
28天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
28天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
12天前
|
算法 索引 Python
SciPy 教程 之 SciPy 图结构 3
SciPy 图结构教程:介绍图的基本概念、节点和边的定义,以及如何使用 SciPy 的 `scipy.sparse.csgraph` 模块处理图结构。重点讲解 Dijkstra 最短路径算法及其在 SciPy 中的应用,包括 `dijkstra()` 方法的参数设置和使用示例。
11 0
|
12天前
|
Python
SciPy 教程 之 SciPy 图结构 2
《SciPy 教程 之 SciPy 图结构 2》介绍了图结构作为算法学中的重要框架,通过 `scipy.sparse.csgraph` 模块处理图结构。文章示例展示了如何使用 `connected_components()` 方法查找所有连接组件,通过创建稀疏矩阵并调用该方法实现。
8 0