条件命令行参数[可能使用getopt()?? ]

时间:2011-05-14 10:46:40

标签: python python-2.6 python-2.4

这与我之前的帖子here有关。运行实际脚本,我输出如下结果:

[root@test_vm /]# torque_history.py -m 4
Job Id       User      Real User       Start Date      S  End Date        Exec Host    Queue  
-----------  --------  --------------  --------------  -  --------------  -----------  -------
0.vmtest2    dteam001  Kashif M. Raza  18/04 16:53:03  C  18/04 16:53:05  vmtest1.abc  express
2.vmtest2    dteam007  Arnau Hahkala   19/04 13:21:19  C  19/04 13:23:26  vmtest3.abc  medium
....
....
160.vmtest2  sgmatlas  Andrew Lloyd    30/04 15:44:36  C  30/04 15:54:04  node029.abc  short  
162.vmtest2  sgmops    Maarten Lapka   30/04 16:44:36  C  30/04 16:45:48  vmtest1.abc  express
---------------------------------
107 records in history (0.04 sec)
如果没有给出选项打印整个记录,

-m 4仅打印4月的记录,依此类推。我希望我的用户能够构建条件查询字符串,例如:m == "4" && RealUser == "Maarten Lapka"并且还以所需的格式输出他们想要的唯一字段的结果,例如:JobId && StartDate && User,这意味着用户正在寻找Maarten Lapka在4月份提交的工作记录,并希望按照他提到的顺序仅打印工作ID,工作开始日期和用户名。因此,可能的命令可能是:

torque_history.py -c 'm == "4" && RealUser == "Maarten Lapka"' -f 'JobId && ExecHost && StartDate'

其中-c--constraint的缩写,-f的短--format或其他。任何人都可以建议我这样做吗?是否可以使用getopt()

我的问题部分是我们使用RHEL5的变体(即SL5,SLC5,CentOS),它们都标配python v2.4,我无法确保每个站点并行运行v2.6。所以,我希望尽可能保持与v2.4的接近,并尽可能使用getopt()。我的计划是使用shedskin编译python代码并分发c ++文件以最小化兼容性问题。在这种情况下,我可以使用v2.6,但我要使用模块支持,而getopt()就是其中之一。

我很抱歉,如果我让你们很难,但我真的很期待一些帮助和建议。谢谢你的时间。干杯!!!

1 个答案:

答案 0 :(得分:1)

optparse是纯Python,因此如果需要,我会忘记getopt()并将其拉入您的应用。

try:
  import optparse
except ImportError:
  import external.optparse as optparse

不要忘记创建external/__init__.py