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


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

    by:授客 QQ1033553122

    测试环境:

    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:svnmyfolderase'.replace('', '/b'),'D:svnmyfolderdirname')

        delete_file('D:svnmyfolderdirnameV8.3')

     

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

     

     

  • 相关阅读:
    使用 Fiddler 对android模器进行Http监控(转)
    UDID替代方案(转)
    iPhone用nib/xib文件载入窗口,和用代码写窗口,到底哪个快?(转)
    UINavigationController修改默认的动画
    《Programming WPF》翻译 第8章 5.创建动画过程
    《Programming WPF》翻译 第8章 6.我们进行到哪里了?
    《Programming WPF》翻译 第8章 2.Timeline
    《Programming WPF》翻译 第9章 4.模板
    《Programming WPF》翻译 第9章 1.自定义控件基础
    《Programming WPF》翻译 第9章 前言
  • 原文地址:https://www.cnblogs.com/shouke/p/10157543.html
Copyright © 2020-2023  润新知