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')

 

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

 

目录
相关文章
|
11月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
774 0
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
2612 2
|
11月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1910 68
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
388 0
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
3274 0
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
1045 0
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1763 102
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
563 104

推荐镜像

更多