【python常用命令】

本文介绍了如何在Python中使用`commands`和`os.system`发送CMD命令,区别在于`os.system`实时打印执行过程;利用`logging`模块记录日志,以及如何修改Python的临时环境变量,包括处理中文编码问题和实现多线程并行执行。
摘要由CSDN通过智能技术生成

1、py发送cmd命令--commands

import os,sys,commands,time,logging

python_path=runall_path+'/global_Common/global_oracle_sec'
cmd='export PYTHONPATH=%s;python run_all.py %s %s %s' %(python_path,ip,mode,batch)
logger.info(cmd)
status,execute_result = commands.getstatusoutput(cmd)
logger.info(execute_result)

使用commands,cmd命令执行完才会返回结果。如果这个cmd命令执行时间比较长,需等执完成logger.info(execute_result)才会在控制台打印结果

2、py发送cmd命令--os.system

python_path=file_path+'/global_Common/global_standard'
cmd='export PYTHONPATH=%s;python run_all.py %s %s %s' %(python_path,ip,mode,batch)
logger.info(cmd)
logger.info(os.system(cmd))

使用os.system,cmd命令边执行边返回结果。如果这个cmd命令执行时间比较长,不需等待 logger.info(os.system(cmd))会在控制台实时打印执行过程结果

3、打印--logging

import logging
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger()

logger.info(cmd)

logger.error("run_all.py执行失败")

logger与print的区别是,在linux执行py,logger打印的内容会显示在控制台,还带时间等信息

4、修改python的临时环境变量

如果测试用例py中from  GlobalList.global_list import *,环境连接信息来源于项目的GlobalList文件夹下的global_list.py文件,而测试时想使用别的global_list.py文件。解决办法:重命名原来的GlobalList文件夹,新建别的文件夹,放入GlobalList文件夹和global_list.py文件,export命令修改临时环境变量

file_path=os.path.dirname(__file__)
    os.system('cd %s'%file_path)
    os.system('mv GlobalList GlobalList_bck')
    if mode=='standard':
        try:
            runall_path=os.path.abspath('.')
            python_path=runall_path+'/global_Common/global_standard'
            cmd='export PYTHONPATH=%s;python run_all.py %s %s %s' %(python_path,ip,mode,batch)
            logger.info(cmd)
            logger.info(os.system(cmd))
        except Exception as e:
            logger.error("run_all.py执行失败")
            sys.exit(1)

(shell脚本修改环境变量命令export PYTHONPATH=$PYTHONPATH:/home/uxdb/CI_AutoTest/share/autotestcase/TestScript/global_count/$node/$task)

5、py里有中文,运行报错

在安装python2时,默认编码是ascii,当程序中出现非ascii编码时,python解释器会报错。python解释器没法处理非ascii编码,在程序中加入以下代码,即可将编码设置为utf-8。

import sys

reload(sys)
sys.setdefaultencoding('utf8')

6、多线程并行

from threading import Thread

def run(ip,mode,batch):

       ****线程执行的目标函数

def parallel_runcase(ip,mode,batch):
    mode_list=mode.split(',')
    print mode_list
    threads = []
    for mode in mode_list:
        threads.append(Thread(target=run,args=(ip,mode,batch)))
    for t in threads:
        print t
        t.start()
        time.sleep(1)
        #t.join() 
    logger.error('用例连跑完成!')


parallel_runcase(ip,mode,batch)

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值