您能否使python脚本在导入时的行为与直接运行时的行为有所不同?
我经常需要编写数据解析脚本,我希望能够以两种不同的方式运行它们:作为模块和作为独立脚本。例如:您能否使python脚本在导入时的行为与直接运行时的行为有所不同?,python,Python,我经常需要编写数据解析脚本,我希望能够以两种不同的方式运行它们:作为模块和作为独立脚本。例如: def parseData(filename): # data parsing code here return data def HypotheticalCommandLineOnlyHappyMagicFunction(): print json.dumps(parseData(sys.argv[1]), indent=4) 这里的想法是,在另一个python脚本中,我
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
,它将运行我的hypoticalcommandlineonlyhappymagicfunction
,并将数据作为json分流到stdout。在python中有什么方法可以做到这一点吗?标准的方法是保护代码,这些代码应该只在脚本被调用为独立脚本时运行
if __name__ == "__main__":
# Your main script code
如果导入模块,则此if
后面的代码将不会运行
\uuuu name\uuuu
特殊变量以字符串形式包含当前模块的名称。如果文件名为glonk.py
,则如果文件作为模块导入,则\uuuu name\uuuu
将是“glonk”
,如果文件作为独立脚本运行,则将是“\uuuu main”