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

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中有这样做的方法吗?

最佳答案

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

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

如果导入模块,则此if之后的代码将不会运行。
特殊变量以字符串形式包含当前模块的名称。如果您的文件名为__name__,则如果该文件作为模块导入,则glonk.py将为__name__;如果该文件作为独立脚本运行,则"glonk"将为"__main__"

关于python - 导入时是否可以使python脚本的行为与直接运行时不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10064796/

10-14 18:12
查看更多