[英]how to pass arguments to imported script in Python
I have a script ( script1.py
) of the following form:我有一个以下形式的脚本(
script1.py
):
#!/bin/python
import sys
def main():
print("number of command line options: {numberOfOptions}".format(numberOfOptions = len(sys.argv)))
print("list object of all command line options: {listOfOptions}".format(listOfOptions = sys.argv))
for i in range(0, len(sys.argv)):
print("option {i}: {option}".format(i = i, option = sys.argv[i]))
if __name__ == '__main__':
main()
I want to import this script in another script ( script2.py
) and pass to it some arguments.我想在另一个脚本(
script2.py
)中导入这个脚本并向它传递一些参数。 The script script2.py
could look something like this:脚本
script2.py
可能如下所示:
import script1
listOfOptions = ['option1', 'option2']
#script1.main(listOfOptions) insert magic here
How could I pass the arguments defined in script2.py
to the main function of script1.py
as though they were command line options?如何将
script2.py
定义的参数传递给script1.py
的主函数,就好像它们是命令行选项一样?
So, for example, would it be Pythonic to do something such as the following?:因此,例如,执行以下操作是否属于 Pythonic?:
import script1
import sys
sys.argv = ['option1', 'option2']
script1.main()
For reusability of your code, it is practical to keep the acting function separated from command line parsing为了代码的可重用性,将执行函数与命令行解析分开是可行的
scrmodule.py
def fun(a, b):
# possibly do something here
return a + b
def main():
#process command line argumens
a = 1 #will be read from command line
b = 2 #will be read from command line
# call fun()
res = fun(a, b)
print "a", a
print "b", b
print "result is", res
if __name__ == "__main__":
main()
from scrmodule import fun
print "1 + 2 = ", fun(1, 2)
# script1.py
#!/bin/python
import sys
#main function is expecting argument from test_passing_arg_to_module.py code.
def main(my_passing_arg):
print("number of command line options: {numberOfOptions}".format(numberOfOptions = len(sys.argv)))
print("list object of all command line options: {listOfOptions}".format(listOfOptions = my_passing_arg))
print(my_passing_arg)
if __name__ == '__main__':
main()
#test_passing_arg_to_module.py
import script1
my_passing_arg="Hello world"
#calling main() function from script1.py code.
#pass my_passinga_arg variable to main(my_passing_arg) function in scritp1.py.
script1.main(my_passing_arg)
##################
# Execute script
# $python3.7 test_passing_arg_to_module.py
# Results.
# number of command line options: 1
# list object of all command line options: Hello world
# Hello world
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.