我经常需要编写数据解析脚本,我希望能够以两种不同的方式运行它们:作为模块和独立脚本。所以,例如:
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中执行此操作?
答案 0 :(得分:13)
执行此操作的标准方法是保护仅在脚本被单独调用时运行的代码
if __name__ == "__main__":
# Your main script code
如果导入模块,则不会运行此if
之后的代码。
__name__
特殊变量包含当前模块的名称作为字符串。如果您的文件名为glonk.py
,则__name__
如果文件作为模块导入则为"glonk"
,如果文件作为展位运行,则"__main__"
为{{1}} - 独立脚本。