如何在 Python 中将参数传递给导入的脚本

d3p*_*3pd 6 python import command-line arguments options

我有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()
Run Code Online (Sandbox Code Playgroud)

我想在另一个脚本 ( script2.py) 中导入这个脚本并向它传递一些参数。该脚本script2.py可能如下所示:

import script1

listOfOptions = ['option1', 'option2']
#script1.main(listOfOptions) insert magic here
Run Code Online (Sandbox Code Playgroud)

我如何将定义的参数传递script2.py给 main 函数,script1.py就好像它们是命令行选项一样?

因此,例如,执行以下操作是否属于 Pythonic?:

import script1
import sys

sys.argv = ['option1', 'option2']
script1.main()
Run Code Online (Sandbox Code Playgroud)

Jan*_*sky 1

单独的命令行解析和调用函数

为了代码的可重用性,将执行函数与命令行解析分开是很实用的

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()
Run Code Online (Sandbox Code Playgroud)

从其他地方重复使用它

from scrmodule import fun

print "1 + 2 = ", fun(1, 2)
Run Code Online (Sandbox Code Playgroud)