zoukankan      html  css  js  c++  java
  • python2 和python3 删除非代码文件及非代码目录

    业务验收,需要使用checkmarx对代码进行安全扫描,一般代码库不规范,提交了很多非代码文件夹及文件夹,需要遍历代码库,删除非代码文件、空文件夹、非代码文件夹,python代码如下,2 和3 都可以运行,可以直接再centos 系统执行。

    #!/usr/bin/python
    # -*- coding: utf-8 -*- 
    import os
    
    dir_count = 0
    file_count =0
    # 递归遍历文件夹
    def travel_file(file):
        global file_count
        for root, dirs, files in os.walk(file):
            # 文件处理
            for f in files:
                fn = os.path.join(root, f)
               # print(fn)
                hz=fn.split(".")[-1]
                #hz  = os.path.splittext(fn)[-1]
                #保留指定类型的文件
                if hz not in ["javasln","project","java","jsp","jsx","jspf","tag","tld","hbs","properties","aspx","ascx","config","xml","cgi","inc","js","htm","html","json"]:
                    os.chmod(fn,0o777)
                    os.remove(fn)
                    file_count = file_count + 1
                    #print('移除文件: ' + fn)
                list_to_delete_file_name=["副本","改前"," copy.js"]  #删除文件名包含特定字符的文件
                for item in list_to_delete_file_name:
                    if item in f:
                        os.chmod(fn,0o777)
                        os.remove(fn)
                        file_count = file_count + 1
                        print('移除文件: ' + fn)
    
                if is_chinese(f):
                    print(fn)
    
    
    def is_chinese(check_str):
        """
        代码文件名称一般是不含有中文,检查路径是否有中文,支持python2 python3
        :param check_str:
        :return:
        """
        import sys
        main_python_version = sys.version_info.major
        if main_python_version == 3:
        # python3   for ch in check_str:
        # python2  for ch in f.decode('utf-8'):
            for ch in check_str:
                if u'\u4e00' <= ch <= u'\u9fff':
                    return True
        else:
            for ch in check_str.decode('utf-8'):
                if u'\u4e00' <= ch <= u'\u9fff':
                    return True
        return False
    
    
    def delete_empty_dir(dir):
        global dir_count
        if os.path.isdir(dir):
            for d in os.listdir(dir):
                if d in ["node_modules"]: # 删除指定文件夹 可以是非空文件夹
                    import shutil
                    shutil.rmtree(os.path.join(dir, d), ignore_errors=True)
                    dir_count = dir_count + 1
                    #print('移除指定目录: ' + os.path.join(dir, d))
                delete_empty_dir(os.path.join(dir, d))
    
    
            if not os.listdir(dir):
                os.rmdir(dir)
                dir_count = dir_count + 1
                #print('移除空目录: ' + dir)
                    
    
    if __name__ == '__main__':
        deal_path = r'/opt/pmo/zhcz-bb/code'
        deal_path=r'D:\code\sal'
        deal_path = r'/opt/pmo/zhcz-bb/push_code'
        travel_file(deal_path)
        delete_empty_dir(deal_path)
        print('移除文件总数: ' + str(file_count))
        print('移除文件夹总数: ' + str(dir_count))
  • 相关阅读:
    Python随心记---数据类型
    Pycharm报错解决:error:please select a valid Python interpreter 及一些基本设置
    Python随心记--用户登录锁定
    Python随心记-continue 和 break的区别
    Python随心记
    PHP随笔-判断访问者的设备
    JFinal架构简介
    com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect。ecplise连接sqlserver失败,解决方案。亲测有效!!!
    什么是maven,jar包的查找过程?
    SVN:项目管理工具
  • 原文地址:https://www.cnblogs.com/testway/p/15737022.html
Copyright © 2011-2022 走看看