2010-10-29 67 views
1

我使用配置模块将全局变量存储到所有模块。它是解析脚本参数的好地方吗? (注:配置模块是我自己的模块,它只是包含了一些全局变量)解析配置模块中的选项

----- 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 

我关心的不是“主”文件以外的文件执行parse_args()功能(从命令调用线)。

+1

1)当你导入一个文件时,你不需要'.py',只需要“导入配置”。 2)使用当前的config.py,每次导入文件时都会执行parse_args()。 – 2010-10-29 04:34:35

+0

啊,这不是一个好主意。谢谢 - – max 2010-10-29 16:17:32

回答

0

你想做什么?有两种方法可以尝试 -

  1. 将参数值从命令行传递到程序(使用optparse)。
  2. 或写一个config.py导入它在你的程序中&继续。

你为什么要这么做(&也在你的config文件中)?

我看到您已将config模块写入.py(这很好)。但是这个文件应该包含最少的代码。只需配置设置。它会帮助你保持代码&配置分离。

我遵循的一般规则是,如果需要传递给我的程序的参数超过6-7,我使用一个配置文件。否则就是optparse

+0

这是一个很好的观点。我想我在想我会把--verbose和--file文件名放入命令行参数中。由于这些变化很频繁,我认为打开config.py会很愚蠢。但我想我可以将所有内容组合到config.py中。 – max 2010-10-29 03:20:20

+0

它可能会让用户把一些选项放在'config'文件和一些命令行中。更好地摆动任何方式完全。 – 2010-10-29 08:58:13