2010-06-01 21 views
1

J'essaie d'utiliser optparse mais j'ai un problème.optparse: Pas d'option chaîne

Mon utilisation de script serait: script <filename>

Je ne l'intention d'ajouter une chaîne d'options, telles que: script -f <filename> ou script --file <filename>

Est-il possible que je peux choisir de ne pas passer une chaîne d'argument? Ou est-il un moyen que je peux permettre à l'utilisateur de le faire:

script -f <filename> 
script --filename <filename> 
script <filename> 

Tous les ci-dessus avec la même conséquence? Je sais que je peux facilement faire avec cela en utilisant argv[1] mais le fait est que je pourrais avoir besoin d'ajouter la prise en charge en ligne de commande plus tard dans le projet et ajouter ce temps je ne voudrais pas ajouter le support optparse partout. C'est la raison pour laquelle je veux utiliser optparse.

Répondre

1
import optparse 

parser = optparse.OptionParser() 
parser.add_option("-f", "--filename", metavar="FILE", dest="input_file", action="append") 
options, args = parser.parse_args() 
if options.input_file: 
    args.extend(options.input_file) 

for arg in args: 
    process_file(arg) 

Ce sera tout simplement utiliser args comme une liste de fichiers d'entrée, mais il ajoutera les noms de fichiers passés en -f ou --filename arguments à args afin que vous obtiendrez tous.

+0

Pouvez-vous expliquer ce que fait 'process_file'? – user225312

+0

@Alfred Je suppose que 'process_file' est un exemple de sous-routine utilisé comme un marqueur de l'endroit où mettre le code qui utilise réellement votre entrée' '. –

+0

@Peter: Aha! Merci. Stupide que je suis :) – user225312