Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您能否使python脚本在导入时的行为与直接运行时的行为有所不同?_Python - Fatal编程技术网

您能否使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”