我当前正在将python脚本导入到我的主python文件中。当我导入脚本并通过命令行运行主脚本时,导入的脚本似乎先运行并显示输出,然后再运行我的主脚本。我的导入脚本中没有main(),而我的主脚本中只有这个。我的代码如下:
import argparse
from test_compare_filesets import testing
def main():
print("export_data is the main file")
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--export-date", action="store_true", required=False)
parser.add_argument("-t", "--execute-test", action="store_true", required=False)
args = parser.parse_args()
if args.execute_test :
print "Test Mode"
testing()
if args.export_date :
print "Normal Mode"
if __name__ == '__main__':
main()
else:
print ("DIE EXPORT_DATA")
答案 0 :(得分:2)
当您在主文件中调用from test_compare_filesets import testing
时,模块test_compare_filesets.py
将运行。
定义函数后,然后运行最后一部分:
if __name__ == '__main__':
testing()
else:
print "DIE COMPARE FILSETS"
由于已导入此模块,因此其__name__
属性为不是 "__main__"
,因此运行了else
子句,并输出DIE COMPARE FILSETS
。导入之后,您的主脚本定义了自己的功能。
由于您的主脚本将__name__
作为"__main__"
,因此它将运行main()
函数并打印export_data is the main file
。
因此,您将期待以下输出:
$ python main_script.py
DIE COMPARE FILSETS
export_data is the main file
(紧随main()
函数执行期间的所有打印内容。
答案 1 :(得分:-1)
到目前为止,这是我的代码。本质上,当使用-t标志运行python脚本时,这将从test_compare_filesets返回所有内容并打印到终端,就像传递-d标志一样,它将仅打印“正常模式”。我似乎收到一个RunTimeError并出现以下问题:“ RuntimeError:调用Python对象时超出了最大递归深度:
import argparse
from test_compare_filesets import testing
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--export-date", action="store_true", required=False)
parser.add_argument("-t", "--execute-test", action="store_true", required=False)
args = parser.parse_args()
if args.execute_test :
print "Test Mode"
testing()
else:
print "Normal Mode"
if __name__ == '__main__':
main()
else:
print ("DIE EXPORT_DATA")