关于使用参数从命令行调用函数:使用参数从命令行调用函数 – Python(多个函数选择)

Call a functionfrom command line with arguments - Python (multiple function choices)

我正在使用Python 3.6,我有一个名为file.py的文件,有两个函数:

1
2
3
4
5
def country(countryName):
    print(countryName)

def capital(capitalName):
    print(capitalName)

我需要从命令行调用这两种方法中的任何一种,但真诚地我不知道如何做到这一点,也用这种方式的参数。

1
python file.py <method>

有人知道怎么做吗?

问候!


要在程序中使用命令行参数,可以使用sys.argv。 阅读更多

1
2
3
4
5
6
7
8
9
10
11
12
import sys

def country(countryName):
    print(countryName)

def capital(capitalName):
    print(capitalName)

method_name = sys.argv[1]
parameter_name = sys.argv[2]

getattr(sys.modules[__name__], method_name)(parameter_name)

要运行该程序:

1
python file.py capital delhi

输出:

1
delhi

您的输入参数method_name是一个字符串,因此无法直接调用。 因此我们需要使用getattr获取方法句柄。

Command sys.modules[__name__]获取当前模块。 这是file.py模块。 然后我们使用getattr来获取我们想要调用的方法并调用它。 我们将参数作为`(parameter_name)'传递给方法


你可以有一个模块来检查你的file.py,称之为executor.py,并调整你在file.py中的方法来处理参数列表

executor.py:

1
2
3
4
5
import file
import sys    

method = file.__dict__.get(sys.argv[0])
method(sys.argv[1:-1])