Arguments de ligne de commande conditionnels [éventuellement en utilisant getOPT () ?? ]

StackOverflow https://stackoverflow.com/questions/6001309

  •  13-11-2019
  •  | 
  •  

Question

Ceci est lié à mon post précédent ici. En exécutant le script réel, je publie le résultat comme ceci:

[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 Imprime les enregistrements uniquement pour avril, si aucune option n'est donnée imprime des enregistrements entiers et ainsi de suite. Je veux que mon utilisateur puisse construire la chaîne de requête conditionnelle, comme: m == "4" && RealUser == "Maarten Lapka" et émettent également le résultat avec les seuls champs qu'ils souhaitent, dans le format souhaité, comme: JobId && StartDate && User, ce qui signifie que l'utilisateur recherche les dossiers de l'emploi qui sont soumis par Maarten Lapka en avril et souhaitent imprimer uniquement le travail d'emploi, la date de début de travail et le nom de l'utilisateur dans l'ordre qu'il a mentionné. Ainsi, une commande possible pourrait être:

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

-c est le court pour --constraint et -f pour --format ou peu importe. Quelqu'un peut-il me suggérer un moyen de faire cela? Est-il possible d'utiliser getopt()?

La partie de mon problème est que nous utilisons la variante de RHEL5 (c'est-à-dire SL5, SLC5, CentOS), ils sont tous livrés avec Python V2.4 en standard et je ne peux pas m'assurer que chaque site fonctionne V2.6 en parallèle. Donc, je veux rester proche autant que possible à la v2.4 et en utilisant getopt() si possible. Mon plan est de compiler le code Python en utilisant peau de basse et distribuer le fichier C ++ pour minimiser le problème de compatibilité. Dans ce cas, je peux utiliser le v2.6 mais je dois utiliser les modules qui ont le support de la peau de lames et getOPT () en fait partie.

Je suis désolé si je rend difficile pour vous, mais j'ai vraiment hâte de vous aider et de suggestions. Merci pour votre temps. Acclamations!!!

Était-ce utile?

La solution

optparse est pur python, donc j'oublierais getopt() Et tirez-le dans votre application si besoin est.

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

N'oubliez pas de créer external/__init__.py.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top