【问题标题】:Call a functionfrom command line with arguments - Python (multiple function choices)使用参数从命令行调用函数 - Python(多个函数选择)
【发布时间】:2017-06-08 17:16:00
【问题描述】:

我使用的是 Python 3.6,我有一个名为 file.py 的文件,具有以下两个功能:

def country(countryName):
    print(countryName)

def capital(capitalName):
    print(capitalName)

我需要从命令行调用这两种方法中的任何一种,但我真的不知道该怎么做,也以这种方式使用参数。

python file.py <method> <argument>

有人知道怎么做吗?

您好!

【问题讨论】:

标签: python python-3.x cmd


【解决方案1】:

要在程序中使用命令行参数,您可以使用 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)' 传递给方法

【讨论】:

  • 非常感谢辛格! :)
【解决方案2】:

您可以有一个模块来检查您的 file.py,将其命名为 executor.py,并调整您在 file.py 中的方法以处理参数列表

executor.py:

import file
import sys    

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

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2015-07-03
    • 2013-07-17
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多