更多的处理:在Jython中解析命令行

开发 后端
经常会需要对命令行参数进行比 sys.argv 所提供的更多的处理,因此在Jython中解析命令行成了一个有效的手段。本文介绍了如何在Jython中解析命令行。

在Jython中解析命令行

经常会需要对命令行参数进行比 sys.argv 所提供的更多的处理。parseArgs 函数可以用于作为一组位置参数和一个开关字典得到任意的命令行参数。

因此,继续 JavaUtils.py模块片段,我们看到:

def parseArgs (args, validNames, nameMap=None):  
    """ Do some simple command line parsing. """ 
    # validNames is a dictionary of valid switch names -  
    #   the value (if any) is a conversion function  
    switches = {}  
    positionals = []  
    for arg in args:  
        if arg[0] == '-':               # a switch  
            text = arg[1:]  
            name = text; value = None 
            posn = text.find(':')       # any value comes after a :  
            if posn >= 0:  
                name = text[:posn]  
                value = text[posn + 1:]  
            if nameMap is not None:     # a map of valid switch names  
                name = nameMap.get(name, name)  
            if validNames.has_key(name):   # or - if name in validNames:  
                mapper = validNames[name]  
                if mapper is None: switches[name] = value  
                else:              switches[name] = mapper(value)  
            else:  
                print "Unknown switch ignored -", name  
 
        else:                           # a positional argument  
            positionals.append(arg)  
    return positionals, switches  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

可以如下使用这个函数(在文件 parsearg.py 中):

from sys import argv  
from JavaUtils import parseArgs  
 
switchDefs = {'s1':None's2':int, 's3':float, 's4':int}  
args, switches = parseArgs(argv[1:], switchDefs)  
print "args:", args  
print "switches:", switches  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

对于命令c:\>jython parsearg.py 1 2 3 -s1 -s2:1 ss -s4:2,它打印:

args: ['1''2''3''ss']  
switches: {'s4'2's2'1's1'None
  • 1.
  • 2.

这样就实现了在Jython中解析命令行。

【编辑推荐】

  1. 如何将Jython类型转换为Java类型
  2. Jython访问Java属性文件的方法一览
  3. 用于Jython连接Java的JavaUtils模块
  4. Jython线程示例:定义共享缓冲区
  5. 与Java语言相比Jython开发的独特性能
责任编辑:yangsai 来源: 网络
相关推荐

2010-05-21 18:30:02

2023-11-30 10:42:43

Rust命令行参数

2010-08-20 10:05:23

用户命令

2009-07-20 09:55:30

华为命令行解析华为认证

2010-07-15 10:47:22

Perl命令行

2021-07-29 10:00:43

XMLXMLStarletLinux

2021-07-12 14:53:27

LinuxGmail电子邮件

2010-03-24 14:08:10

CentOS命令行

2021-11-08 10:45:07

Python命令工具

2010-07-15 11:08:23

Perl命令行

2011-01-18 19:11:26

Postfix命令行

2021-01-13 05:29:26

命令行

2021-08-19 14:27:56

Java应用程序解析方法

2023-03-28 08:40:22

命令行JSON用法

2022-10-25 13:01:36

Linux命令行空目录

2023-03-01 11:35:45

2011-01-17 11:12:54

华为认证

2021-08-30 07:50:42

脚本语言命令行

2023-07-05 08:38:48

GolangGo语言

2010-07-15 10:58:23

Perl命令行程序
点赞
收藏

51CTO技术栈公众号