我正在使用Python 3.6,我有一个名为file.py的文件,它具有以下两个功能:
def country(countryName):
print(countryName)
def capital(capitalName):
print(capitalName)
我需要从命令行中调用这两种方法中的任何一种,但是我真的不知道如何做到这一点,也是以这种方式使用参数。
python file.py <method> <argument>
有人知道怎么做吗?
问候!
答案 0 :(得分:2)
要在程序中使用命令行参数,可以使用sys.argv。 Read more
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)
运行程序:
python file.py capital delhi
输出:
delhi
您的输入参数method_name是一个字符串,因此无法直接调用。因此,我们需要使用getattr
获取方法句柄。
命令sys.modules[__name__]
获取当前模块。这是file.py模块。然后我们使用getattr
来获取我们想要调用的方法并调用它。我们将参数作为`(parameter_name)'
答案 1 :(得分:0)
您可以使用一个模块来检查您的file.py,将其命名为executor.py,并调整file.py中的方法来处理参数列表
executor.py:
import file
import sys
method = file.__dict__.get(sys.argv[0])
method(sys.argv[1:-1])