首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您是否可以让python脚本在导入时与直接运行时的行为有所不同?

您是否可以让python脚本在导入时与直接运行时的行为有所不同?
EN

Stack Overflow用户
提问于 2012-04-09 01:27:23
回答 1查看 138关注 0票数 2

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

代码语言:javascript
复制
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中做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-09 01:28:48

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

代码语言:javascript
复制
if __name__ == "__main__":
    # Your main script code

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

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10064796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档