`
lhq1013
  • 浏览: 87991 次
  • 性别: Icon_minigender_2
  • 来自: 丽水
社区版块
存档分类
最新评论

python2.X参数处理和初始化日志

 
阅读更多

语言:python 2.X

 

    BaseConfig.py处理传参示例代码:

#-*- coding: UTF-8 -*- 
import getopt
import sys,os
import traceback
import utils

class BaseConfig(object):
    _instance = None  

    def __new__(cls, *args, **kwargs):  
        if not cls._instance:  
            cls._instance = super(BaseConfig, cls).__new__(  
                                cls, *args, **kwargs)  
        return cls._instance
    
    def __init__(self):
        pass
    
    def main(self):
        arg_list = ["username=", 
                         "ip=", 
                         "s="]
        for arg in sys.argv:
            if arg.startswith('--'):
                ky = arg.split('=')[0][2:]
                if '%s='%ky not in arg_list:
                    arg_list.append(ky+'=')
        opts,args = getopt.getopt(sys.argv[1:],"o:t:",arg_list)
        BaseConfig.optArgs = opts,args
        BaseConfig.ip = ''
        BaseConfig.username = ''
        BaseConfig.compare = ''
        BaseConfig.waittime = ''
        
        for opt,arg in opts:
            if opt == '--s':
                BaseConfig.serialNum = arg
                if BaseConfig.adbType == None or BaseConfig.adbType == "":
                    BaseConfig.adbType = self.getadbType(BaseConfig.serialNum)
            elif opt == '--ip':
                BaseConfig.ip = arg
            elif opt == '--username':
                BaseConfig.username = arg
            elif opt == '-o':
                BaseConfig.compare = arg
            elif opt == '-t':
                BaseConfig.waittime = arg

if __name__ == "__main__":
    ba = BaseConfig()
    ba.main()

 

    ChildCls.py复用BaseConfig.py处理参数,以及初始化日志示例代码:

#-*- coding: UTF-8 -*- 

import os
import sys
import getopt
import getpass
import logging
import traceback
import json
import httplib
import socket
import time

corepath = os.path.dirname(__file__)
scriptpath = os.path.dirname(corepath)
sys.path.append(scriptpath)

class ChildCls():
    def __init__(self,itemName=""):  
        self.argsObj = BaseConfig()
        try:
            self.argsObj.main()
        except Exception,e:
            print e
        self.ip = self.argsObj.ip
        self.username = self.argsObj.username
        self.waittime = self.argsObj.waittime

    def initLog(self, rootPath = None):
        log_start_time = time.strftime('%Y%m%d_%H%M%S')
        logfilename = str(log_start_time) + ".log"
        rootpath = "./"
        if rootPath:
            rootpath = rootPath + os.sep
        logpath = rootpath + "logs" + os.sep
        print logpath
        if not os.path.exists(logpath):
            os.makedirs(logpath)
        logfilename = logpath + logfilename
        print logfilename
        logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(levelname)s %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    filename=logfilename,
                    filemode='a')
        console = logging.StreamHandler()
        console.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
        console.setFormatter(formatter)
        if len(logging.getLogger('').handlers)<2:
            logging.getLogger('').addHandler(console)

    def exection(self):
        print self.ip
        print self.username
        print self.waittime

def main():
    global result_msg
    current_path = os.getcwd()
    print "current_path: ", current_path

    try:
        master = ChildCls()
        py_root_path = os.path.split(os.path.realpath(__file__))[0]
        print "py_root_path: ", py_root_path
        master.initLog(py_root_path + os.sep)
        logging.info(" ----- Started ------ ")
        master.exection()
    except:
        print ""
        logging.error(traceback.format_exc()) 
        # return None
    finally:
        os.chdir(current_path)
        logging.info(" -------------- Finished ------------- \r\n" + result_msg + "\r\n")
        logging.shutdown()
            
if __name__ == "__main__":
    main()
    os._exit(0)

 

    传参示例:

python ChildCls.py --ip 123.33.1.4 --username test -t 1000 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Python-xweb一个具有很少代码的Web框架

    2. **创建应用**:创建一个Python文件,初始化xweb应用,定义路由和处理函数。 ```python from xweb import App app = App() @app.route('/') def index(req, res): res.text = 'Hello, xweb!' ``` 3. **运行...

    Python C代码转换示例

    2. **接口函数的设计:** 需要设计一个或多个C函数作为Python接口,负责参数解析和C函数的调用。 3. **函数映射和模块结构体:** 编写一个映射表,将C函数映射到Python接口上;同时创建模块结构体,定义模块的相关...

    脚本编程之:Python.Cookbook(第2版)中文版

    - 模块的初始化和初始化顺序:了解`__init__.py`的作用,以及模块加载的顺序。 - 路径管理:使用sys.path添加或修改Python搜索模块的路径。 6. **并发和异步编程**: - 多线程和多进程:理解GIL(全局解释器锁)...

    Porting your code to Python 3

    本篇文章将详细介绍从Python 2.x迁移到Python 3时需要注意的关键知识点,包括新的语法变化、库的变化以及如何处理Unicode等。 #### 二、Python 3的新特性 ##### 1. `print` 成为函数 - **新特性**:在Python 3中...

    Python库 | PyUpdater-2.1.1-py2.py3-none-any.whl

    PyUpdater支持Python 2和Python 3,这从文件名"PyUpdater-2.1.1-py2.py3-none-any.whl"可以看出,它兼容Python 2.7到Python 3.x的版本,并且是独立于操作系统和架构的。 ### PyUpdater核心功能 1. **自动检查更新*...

    Python 移动光标位置的方法

    1. **初始化文件指针位置**: ```python x = open('1.txt', 'r') print(x.tell()) ``` 这里首先打开名为`1.txt`的文件,模式为只读。`print(x.tell())`将打印出当前文件指针的位置,由于刚刚打开文件,此时文件...

    经典Python面试题之Python基础篇.docx

    Python3 和 Python2 中 int 和 long 的区别? - **Python2**: `int` 表示普通整数,`long` 表示长整数。 - **Python3**: 合并为 `int` 类型,不再区分长整数。 #### 19. xrange 和 range 的区别? - **Python2**...

    Python库 | roxyai-api-1.10.3.tar.gz

    RoxyAI API可能提供了各种方法,如初始化客户端、发送请求、接收响应等。为了更好地利用这个库,开发者需要熟悉其API接口、参数、返回值和错误处理机制。 在开发过程中,为了确保代码的健壮性,我们还需要考虑异常...

    Python-ffmpegpythonFFmpeg的Python绑定拥有复杂的过滤支持

    1. **导入库和初始化**: 在 Python 脚本中,首先需要导入 ffmpeg 库,并根据需要初始化 FFmpeg 进程。这通常通过 `ffmpeg` 模块的全局函数完成。 2. **读取和写入多媒体文件**: 使用 `input()` 和 `output()` ...

    Python库 | py.saunter-0.32-py2.7.egg

    1. **初始化WebDriver**:创建一个WebDriver实例,指定要使用的浏览器类型。 2. **定义页面对象**:根据网页结构定义页面类,包含页面上的元素和相关的操作方法。 3. **编写测试步骤**:在测试函数中,调用页面对象...

    Python库 | pyats.aetest-4.1.2-cp36-cp36m-manylinux1_x86_64.whl

    3. **异常处理与日志记录**:库内置了丰富的异常处理机制,可以自动捕获并记录测试过程中出现的问题,同时提供详细的日志输出,便于调试和问题定位。 4. **参数化测试**:允许用户通过参数化来执行不同条件下的测试...

    Python库 | Paste-0.9.6-py2.3.egg

    它允许快速生成基础的项目结构,简化了应用的初始化过程。 3. **Paste Compose**:这个组件允许将多个WSGI应用组合在一起,形成一个更复杂的Web应用结构,如使用中间件或者路由分发请求。 4. **Paste Filter**:...

    运维必备Python基础入门到精通.pdf

    source参数可以初始化数组,它接受不同的格式。 ```python b = bytearray(b'abc') print(b) # 输出bytearray(b'abc') ``` 以上列举的知识点涵盖了Python语言的基础概念以及在运维领域中的具体应用案例,对于...

    Python库 | frida-12.10.1-py2.7-win-amd64.egg

    2. **安全测试**: 通过检测潜在的安全漏洞,如缓冲区溢出、未初始化的变量等。 3. **自动化工具**: 自定义脚本可以自动化重复性的测试和调试任务。 4. **性能分析**: 跟踪函数调用,了解性能瓶颈。 5. **游戏修改**:...

    Python简单日志处理类分享

    在Python编程中,日志处理是一项非常重要的任务,它能够帮助开发者记录程序运行时的状态,以便于调试、问题排查和性能优化。本文将详细介绍一个简单的Python日志处理类`logsys`,以及如何使用这个类来管理和记录日志...

    基于tensorflow的深度学习猫狗识别.zip

    这个项目是基于TensorFlow 2.x框架进行的,这是一个广泛使用的开源机器学习库,它为构建和训练复杂的神经网络模型提供了便利。 首先,让我们深入理解卷积神经网络(CNN)。CNN是一种专门用于处理图像数据的神经网络...

    Python-MXNet版本的DenseNet实现

    # 初始化模型、损失函数和优化器 net = DenseNet(growth_rate, blocks, num_classes) loss = gluon.loss.SoftmaxCrossEntropyLoss() trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': ...

    MySQL 5.1参考手册

    12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL语句语法...

    mysql官方中文参考手册

    12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL语句语法...

    MYSQL中文手册

    12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL...

Global site tag (gtag.js) - Google Analytics