zoukankan      html  css  js  c++  java
  • 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')

     

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

     

     

  • 相关阅读:
    第十五天 how can I 坚持
    第十四天 how can I 坚持
    第十三天 how can I 坚持
    第十二天 how can I 坚持
    DirectShow使用说明 分类: DirectX 2013-11-15 15:59 705人阅读 评论(0) 收藏
    directdraw显示rgb555 分类: VC++ DirectX 2013-11-15 10:56 663人阅读 评论(0) 收藏
    directdraw显示rgb565 分类: VC++ 2013-11-15 10:55 733人阅读 评论(0) 收藏
    directdraw显示yuv420(YV12) 分类: VC++ 2013-11-14 18:57 1066人阅读 评论(0) 收藏
    directdraw显示yuv422(yuy2) 分类: VC++ 2013-11-14 14:58 932人阅读 评论(0) 收藏
    在DirectShow的视频图像上叠加线条和文字 分类: VC++ DirectX 2013-11-13 09:23 706人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/shouke/p/10157543.html
Copyright © 2011-2022 走看看