2010-10-29 19 views
1

J'utilise le module de configuration pour stocker des variables globales dans tous les modules. Est-ce un bon endroit pour analyser les arguments du script? (Remarque:. Module de configuration est mon propre module, il contient juste un tas de variables globales)options d'analyse dans un module de configuration

----- config.py ----- 
from optparse import OptionParser 

parser = OptionParser() 
parser.add_option("-t", "--test", action = "store_true", dest = "test") 
#add other options here 
(options, args) = parser.parse_args() 

------ file1.py ------ 
import config.py 

if config.options.test: 
    #do something 

------ file2.py ------ 
import config.py 

if config.options.test: 
    #do something 

Je suis préoccupé par l'exécution de la fonction parse_args() dans un fichier autre que le fichier « principal » (appelé à partir de la commande ligne).

+1

1) Lorsque vous importez un fichier, vous n'avez pas besoin de '.py', juste "import config". 2) Avec votre config.py actuel, parse_args() s'exécutera chaque fois que le fichier est importé. –

+0

Ah, ça ne fait pas une bonne idée. Merci - – max

Répondre

0

Qu'est-ce que vous essayez de faire? Vous pouvez essayer 2 méthodes:

  1. Transmettez les valeurs d'argument à votre programme à partir de la ligne de commande (en utilisant optparse).
  2. ou d'écrire un config.py importer dans votre programme & procéder.

Pourquoi voudriez-vous faire les deux (& que trop dans votre fichier config)?

Je vois que vous avez écrit votre module config comme .py (ce qui est bien). Mais ce fichier devrait contenir un code minimal. Juste les paramètres de configuration. Cela vous aidera à garder le code & distinct.

La règle générale que je suis est, si les arguments qui doivent être passés à mon programme est plus de 6-7, j'utilise un fichier de configuration. Sinon c'est optparse.

+0

C'est un bon point. Je suppose que je pensais que je mettrais simplement --verbose et --file filename dans les arguments de la ligne de commande. Comme ceux-ci changent si souvent, je pensais que l'ouverture de config.py serait stupide. Mais je suppose que je peux tout combiner dans config.py. – max

+0

il pourrait être déroutant pour l'utilisateur de mettre certaines options dans un fichier 'config' & certains en ligne de commande. Mieux osciller dans tous les sens. –