2

我经常需要编写数据解析脚本,并且我希望能够以两种不同的方式运行它们:作为模块和作为独立脚本。因此,例如:

def parseData(filename):
    # data parsing code here
    return data

def HypotheticalCommandLineOnlyHappyMagicFunction():
    print json.dumps(parseData(sys.argv[1]), indent=4)

这里的想法是在另一个python脚本中我可以调用import dataparser并可以dataParser.parseData在我的脚本中访问,或者在命令行上我可以运行python dataparser.py它会运行我HypotheticalCommandLineOnlyHappyMagicFunction并将数据作为json分流到stdout。有没有办法在python中做到这一点?

4

1 回答 1

13

执行此操作的标准方法是保护仅应在脚本被独立调用时运行的代码

if __name__ == "__main__":
    # Your main script code

如果模块被导入,之后的代码if将不会运行。

特殊变量包含当前模块的__name__名称作为字符串。如果您的文件被调用glonk.py,那么__name__如果"glonk"文件作为模块导入,并且"__main__"文件作为独立脚本运行,则将是。

于 2012-04-08T17:28:47.657 回答