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