0
这个问题是在link使代码的Python 2.6兼容
#!/usr/bin/env python
import argparse
import sys
import itertools as IT
from snemail import *
parser = argparse.ArgumentParser(
prog='snemail',
usage='%(prog)s [-h] [--usage] action target [input]',
epilog="refer to '%(prog)s usage' for examples of how to run snemail"
)
parser.add_argument('action', metavar='action', nargs='?', type=str, choices=('list', 'add', 'remove'), help="list | remove | add")
parser.add_argument('target', metavar='target', nargs='?', type=str, choices=('domain', 'forwarding', 'transport', 'user', 'all'), help="domain | forwarding | transport | user")
parser.add_argument('input', nargs='?', type=str, default=None, help="required input to go with the 'remove' and 'add' flags. 'list' requires no input field")
parser.add_argument('--usage', action='store_true', help="show usage examples for snemail")
args = parser.parse_args()
if args.usage:
usage()
sys.exit(0)
if args.action is None or args.target is None:
parser.print_help()
sys.exit(0)
if args.target == 'all':
all_list()
sys.exit(0)
if len(sys.argv) >= 3:
input = args.input
input = input.split(',')
else:
input = None
def usage():
print 'usage info here'
targets = 'domain forwarding transport user'.split()
actions = 'list add remove'.split()
dispatch = {key:globals()['%s_%s' % key] for key in IT.product(targets, actions)}
if input is not None:
dispatch.get((args.target, args.action), usage)(input)
elif args.action is not None and args.target is not None:
parser.print_help()
sys.exit(0)
跟进此代码可能会做一个专业的蟒蛇编码器的皮肤爬行,但它为我工作,在Python 2.7版(我用我的开发机),但是当我试图把该要运行这个金码的机器上执行该代码,它并没有因为
dispatch = {key:globals()['%s_%s' % key] for key in IT.product(targets, actions)}
不工作2.7执行代码。
亲爱的互联网大师,如何使这项工作在Python 2.6上? (因为升级到2.7是不是一种选择,但更重要的是,我想写出正确的Python)