zoukankan      html  css  js  c++  java
  • 【python第11日】自动生成项目目录 安全插入本文件夹下文件,即使别人引用也可以

    自动生成项目目录 

    #/usr/bin/env python3
    # encoding : utf-8
    import getopt
    import os
    import sys
    
    
    def usage():
        "帮助信息"
        print("帮助信息:")
        print("	获取帮助:%s [-h|--help]" % os.path.basename(__file__))
        print("	添加目录: %s [-a|--append] "% os.path.basename(__file__))
        print("	添加文件: %s [-f|--file]" % os.path.basename(__file__))
        print("	添加模式已经废弃默认存在不删除: %s [-m|--mode]" % os.path.basename(__file__))
        print("如果有要添加的第一级别目录,请用-a或者--append添加即可")
        print("如果有要添加的文件,请用/分开,例如:"bin/script/create_dir_structure.py",请用-f或者--file添加即可")
        print("模式0表示如果目录或者文件存在,则不变,1表示强制删除添加")
        return
    
    
    def create_dir(dir_name, mode):
        if not os.path.exists(dir_name):
            os.makedirs(dir_name)
    
    
    def create_file(file_name, mode):
        dir_tmp = ""
        file = ""
        #先判断是否有目录,先创建目录再创建文件
        if "/" in file_name:
            dir_tmp = file_name.rsplit("/", 1)[0]
            file = file_name.rsplit("/", 1)[-1]
        else:
            file = file_name
    
        if dir_tmp:
            create_dir(dir_tmp, mode)
        if file and not os.path.exists(file_name) and file_name.endswith(".py"):
            with open(file_name, "w+", encoding="utf-8") as f:
                f.write("#/usr/bin/env python3
    ")
                f.write("# encoding = utf-8
    ")
                f.write("__author__ = "周广露" 
    ")
    
    
    def create_structure(dir_list, file_list, mode):
        "创建文件夹"
        for dir_one in dir_list:
            if dir_one in file_list:
                create_file(dir_one, mode)
            else:
                create_dir(dir_one, mode)
                create_file(dir_one + "/__init__.py", mode)
    
        #为conf/setting.py 提供配置信息
        confpath = "conf/setting.py"
        if os.path.exists(confpath):
            with open(confpath, "a", encoding="utf8") as f:
                writelines = [
                    "
    ",
                    "import  os
    "
                    "
    ",
                    "#Path setting
    ",
                    "BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    ",
                    "BINDIR = os.path.join(BASEDIR, "bin")
    ",
                    "CONFDIR = os.path.join(BASEDIR, "conf")
    ",
                    "LIBDIR = os.path.join(BASEDIR, "lib")
    ",
                    "DBDIR = os.path.join(BASEDIR, "db")
    ",
                    "LOGDIR = os.path.join(BASEDIR, "log")
    ",
                    "PLUGINDIR = os.path.join(BASEDIR, "plugin")
    ",
                    "
    ",
                    "
    ",
                    "#配置信息
    "
                ]
                f.writelines(writelines)
    if __name__ == '__main__':
        mode = 0
        dir_list = ["__init__.py", "bin/__init__.py", "conf/__init__.py","conf/setting.py", "db/__init__.py", "plugin/", "lib", "log", "setup.py"]
        file_list = ["__init__.py", "bin/__init__.py","conf/__init__.py", "conf/setting.py", "db/__init__.py", "setup.py"]
        opts, args = getopt.getopt(sys.argv[1:],"hf:m:a:", ["help", "file=", "mode=", "append="])
    
        for opt in opts :
            if "-h" in opt or "--help" in opt:
                usage()
    
            if "-m" in opt or "--mode" in opt:
                opt1, opt2 = opt
                if opt2 == "1" :
                    mode = 1
                elif opt2 != "0":
                    print("参数m设置错误")
                    usage()
                    sys.exit(0)
    
            if "-a" in opt or "--append" in opt:
                opt1, opt2 = opt
                dir_list.append(opt2)
    
            if "-f" in opt or "--file" in opt:
                opt1, opt2 = opt
                # tmplist = opt2.split("/")
                dir_list.append(opt2)
                file_list.append(opt2)
    
        #把剩余的东西放到目录
        for arg in args:
            print("有多余参数")
            usage()
            sys.exit(0)
    
        create_structure(dir_list , file_list , mode)

    安全import

    import os
    import sys
    
    
    def safe_insert(f_path):
        """
        把文件的路径添加到sys中去
        :param f_path:传入的是文件的绝对路径
        :return:
        """
        BASE_DIR = f_path
        if not os.path.isdir(f_path):
            BASE_DIR=os.path.dirname(f_path)
    
        if BASE_DIR in sys.path:
            sys.path.remove(BASE_DIR)
        sys.path.insert(0,BASE_DIR)
    
    if __name__ == '__main__':
        safe_insert(os.path.abspath(__file__))
        print(sys.path)

    支付宝     
    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    微信

    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打       付款后有任何问题请给我留言!!!

    ------------------------------------------------------------------------------------------
    作者:【周sir】
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Java多线程总结(二)锁、线程池
    Java多线程总结(一)多线程基础
    如何创建并运行java线程
    Java高效计数器
    在JLabel上显示图片,并且图片自适应JLabel的大小
    用java读写ini配置文件
    Java读取ini配置
    JAVA – 虚函数、抽象函数、抽象类、接口
    Java UDP Socket
    18、面向对象基本原则及UML类图简介
  • 原文地址:https://www.cnblogs.com/zhouguanglu/p/10274668.html
Copyright © 2011-2022 走看看