Python使用CMD模块更优雅的运行脚本


Posted in Python onMay 11, 2015

本文实例讲述了Python使用CMD模块更优雅的运行脚本的方法。分享给大家供大家参考。具体分析如下:

平时由于经常给测试人员调试一些东西,虽然写了一些脚本,感觉还是不方便。

python的cmd模块提供的更优雅的方式,很喜欢。

刚写了一些平时常用的测试代码:

# -*- coding:utf-8 -*-
import os, sys
from datetime import datetime
import cmd
import warnings
from django.conf import settings
def not_exit(func):
  def _func(*args, **kwargs):
    try:
      res = func(*args, **kwargs)
      return res
    except:
      print "there is a wrong in %s, please input 'help %s' to get help" % (func.__name__, func.__name__[3:])
      return None
  return _func
class NBScript(cmd.Cmd):
  def __init__(self):
    cmd.Cmd.__init__(self)
    #设置命令提示符
    self.prompt = '> '
    #配置django环境
    pathname = os.path.dirname(sys.argv[0])
    sys.path.append(os.path.abspath(pathname))
    sys.path.append(os.path.normpath(os.path.join(os.path.abspath(pathname), '../')))
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  #清用户cache
  def help_clear_cache(self):
    print "Usage:clear_cache [sns_id]"
    print "-- clear the user's cache"
  @not_exit
  def do_clear_cache(self, sns_id):
    from scripts.update_cache import clear_member_all_cache
    clear_member_all_cache(sns_id)
  #用户升级
  def help_user_level_up(self):
    print "Usage:user_level_up [sns_id] [level]"
    print "-- level up the user to the level"
  @not_exit
  def do_user_level_up(self, parms):
    from apps.members.cache import get_member_by_sns_id, get_or_create_almanac_info
    from apps.members.constants import EXP_LEVEL
    sns_id, level = parms.split()
    sns_id = int(sns_id)
    level = int(level)
    member = get_member_by_sns_id(sns_id)
    al_info = get_or_create_almanac_info(member.id)
    al_info.exp = EXP_LEVEL[level-1] + 1
    al_info.save()
  #增加用户珍珠
  def help_add_pearls(self):
    print "Usage:add_pearls [sns_id] [pearls]"
    print "-- add some pearls to the user"
  @not_exit
  def do_add_pearls(self, parms):
    from platforms.account.helper import add_account_pearls
    sns_id, pearls = parms.split()
    sns_id = int(sns_id)
    pearls = int(pearls)
    add_account_pearls('', '', sns_id, pearls, type='Test', money=0)
  #分鱼
  def help_add_fishes(self):
    print "Usage:add_fishes [sns_id] [fish1 fish2 ...]"
    print "-- add some fishes to the user"
  @not_exit
  def do_add_fishes(self, parms):
    from apps.members.cache import get_member_by_sns_id
    from apps.members.helper import new_a_member_fish
    from apps.products.cache import get_fish
    array = parms.split()
    sns_id = int(array[0])
    fish_ids = [int(i) for i in array[1:]]
    member = get_member_by_sns_id(sns_id)
    for fish_id in fish_ids:
      fish = get_fish(fish_id)
      new_a_member_fish(member, fish.id, update_almanac=True)
  #分贝壳
  def help_add_shells(self):
    print "Usage:add_shells [sns_id] [shells]"
    print "-- add some shells to the user"
  @not_exit
  def do_add_shells(self, parms):
    from apps.members.cache import get_member_by_sns_id
    sns_id, num = parms.split()
    sns_id = int(sns_id)
    num = int(num)
    member = get_member_by_sns_id(sns_id)
    member.shells += num
    member.save()
  #分鱼食
  def help_add_fish_food(self):
    print "Usage:add_fish_food [sns_id] [food_num]"
    print "-- add some food to the user"
  @not_exit
  def do_add_fish_food(self, parms):
    from apps.members.cache import get_member_by_sns_id
    sns_id, num = parms.split()
    sns_id = int(sns_id)
    num = int(num)
    member = get_member_by_sns_id(sns_id)
    member.fish_food += num
    member.save()
  #分鱼缸
  def help_add_fish_tanks(self):
    print "Usage:add_fish_food [sns_id] [tank1,tank2 ...]"
    print "-- add some tanks to the user"
  @not_exit
  def do_add_fish_tanks(self, parms):
    from apps.members.cache import get_member_by_sns_id
    from apps.members.helper import new_a_member_tank
    from apps.products.cache import get_fish_tank
    array = parms.split()
    sns_id = int(array[0])
    tank_ids = [int(i) for i in array[1:]]
    member = get_member_by_sns_id(sns_id)
    for tank_id in tank_ids:
      tank = get_fish_tank(tank_id)
      new_a_member_tank(member, tank.id)
  #分道具
  def help_add_items(self):
    print "Usage:add_items [sns_id] [itme1,item2 ...]"
    print "-- add some itmes to the user"
  @not_exit
  def do_add_items(self, parms):
    from apps.members.cache import get_member_by_sns_id
    from apps.members.helper import new_a_member_item
    from apps.products.cache import get_item
    array = parms.split()
    sns_id = int(array[0])
    item_ids = [int(i) for i in array[1:]]
    member = get_member_by_sns_id(sns_id)
    for item_id in item_ids:
      item = get_item(item_id)
      new_a_member_item(member, item.id)
  #刷任务
  def help_refresh_task(self):
    print "Usage:refresh_task [sns_id]"
    print "-- refresh user's task"
  @not_exit
  def do_refresh_task(self, sns_id):
    from apps.members.cache import get_member_by_sns_id
    sns_id = int(sns_id)
    member = get_member_by_sns_id(sns_id=sns_id)
    member.task_start_time = None
    member.save()
  #调合成等级
  def help_synthesis_level_up(self):
    print "Usage:synthesis_level_up [sns_id] [level]"
    print "-- level up user's synthesis level"
  @not_exit
  def do_synthesis_level_up(self, parms):
    from apps.members.cache import get_member_by_sns_id
    from apps.synthesis.cache import get_or_create_synth_info
    sns_id, lev = parms.split()
    sns_id = int(sns_id)
    lev = int(lev)
    member = get_member_by_sns_id(sns_id=sns_id)
    exp = int(sum([i**1.5*20 for i in range(1,lev+1)]))
    member = get_member_by_sns_id(sns_id)
    synth = get_or_create_synth_info(member.id)
    synth.synth_exp = exp
    synth.save()
  def help_quit(self):
    print "Usage:quit"
  def do_quit(self, line):
    exit()
  do_q = do_quit
if __name__ == "__main__":
  nb_script = NBScript()
  nb_script.cmdloop()

这里权当cmd模块的简单学习了。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python功能键的读取方法
May 28 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
Python GUI编程完整示例
Apr 04 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
Python中DJANGO简单测试实例
May 11 #Python
python单元测试unittest实例详解
May 11 #Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 #Python
Python生成不重复随机值的方法
May 11 #Python
Python解析nginx日志文件
May 11 #Python
Python字符串替换实例分析
May 11 #Python
Python使用django获取用户IP地址的方法
May 11 #Python
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
js实现车辆管理系统
2020/08/26 Javascript
vuex的使用步骤
2021/01/06 Vue.js
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
python多进程操作实例
2014/11/21 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
python安装twisted的问题解析
2018/08/21 Python
python爬虫工具例举说明
2020/11/30 Python
python 6种方法实现单例模式
2020/12/15 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
植树节口号
2014/06/21 职场文书
暑假安全保证书
2015/02/28 职场文书
婚宴父母致辞
2015/07/27 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python