我正在努力解决我在一段需要构建的代码中遇到的问题。我有一个python模块,我需要能够导入并传递参数,然后由主模块解析。我得到的是这样的:
#main.py
if __name__ == '__main__'
sys.argv[] #pass arguments if given and whatnot
Do stuff...
我需要的是添加一个main()
函数,它可以接受参数并解析它们,然后像这样传递它们:
#main.py with def main()
def main(args):
#parse args
return args
if __name__ == '__main__':
sys.argv[] #pass arguments if given and whatnot
main(sys.argv)
Do stuff...
总结一下:我需要导入main.py并传入由main()
函数解析的参数,然后将返回的信息提供给if __name_ == '__main_'
部分。
修改 澄清我在做什么
#hello_main.py
import main.py
print(main.main("Hello, main"))
ALSO 我希望仍能通过
从shell调用main.py$: python main.py "Hello, main"
因此保留名称 == 主要
我问的是甚至可能吗?我一直在花费今天研究这个问题的更好的部分,因为我想,如果可能的话,保留我给出的main.py模块。
谢谢,
DMG
答案 0 :(得分:8)
在模块文件中,您可以编写#mymodule.py
import sys
def func(args):
return 2*args
#This only happens when mymodule.py is called directly:
if __name__ == "__main__":
double_args = func(sys.argv)
print("In mymodule:",double_args)
以在直接调用该文件时获取特定行为,例如通过shell:
#test.py
import mymodule
print("In test:",mymodule.func("test "))
在导入到另一个文件时,仍然可以使用该功能:
python test.py
因此,调用"In test: test test "
会产生python mymodule.py hello
,而调用"In mymodule: hello hello "
会产生#pragma once
。
答案 1 :(得分:0)
如果我理解你的问题你想要做这样的事情:
# In a file called test.py
import main
import sys
... code
if __name__ == "__main__":
main.main(sys.argv)
... rest of your code