在Python中选择要从命令行执行的程序部分

在Python中选择要从命令行执行的程序部分,python,Python,我有一个大计划,比如说我的计划.py。我想用两个选项执行,比如1或2。如果选择选项1 python my_program.py 1,我希望my_program.py执行特定行70至117和注释行118至130中的部分代码,如果选择2,我希望相反的行为注释/停用行70至117和取消注释/激活行118至130 我知道argparse需要从命令行读取,但是对于这个问题,您是否有一个相对干净的解决方案?看看这个优秀的库。它允许您将程序包装成函数,这些函数在从命令行调用时充当程序的命令 您的主文件如下所示

我有一个大计划,比如说我的计划.py。我想用两个选项执行,比如1或2。如果选择选项1 python my_program.py 1,我希望my_program.py执行特定行70至117和注释行118至130中的部分代码,如果选择2,我希望相反的行为注释/停用行70至117和取消注释/激活行118至130


我知道argparse需要从命令行读取,但是对于这个问题,您是否有一个相对干净的解决方案?

看看这个优秀的库。它允许您将程序包装成函数,这些函数在从命令行调用时充当程序的命令

您的主文件如下所示:

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(count, name):
    """Run lines 70 to 117."""
    for x in range(count):
        click.echo('Hello %s!' % name)

@click.command()
@click.option('--count', default=1, help='Number of farewells.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def bye(count, name):
    """Run lines 118 to 130."""
    for x in range(count):
        click.echo('Bye %s!' % name)

if __name__ == '__main__':
    hello()
import sys

def function1():
    # Some code

def function2():
    # More code

def main():
    jobs = {"1": function1, "2": function2}
    choosenOption = sys.argv[1]
    jobs[choosenOption]()

if __name__ == "__main__":
    main()
您可以在命令行执行它,如:

$ python3 my_program.py hello
您可以在python中使用sys模块

import sys

if sys.argv[1] == 1:
  ---
elif sys.argv[1] == 2:
  ---

你应该把你的代码组织成函数

def Function1():
    # Some code


def Function2():
    # And more code
通过这种方式,您可以选择要调用的代码:

Function1() # invoke code included in "Function1"
Function2() # or in Function2
要根据参数调用函数,可以使用条件表达式:

arg = sys.argv[1] # get entered argument

if arg == "1":
    Function1()
elif arg == "2":
    Function2()
或更好的解决方案使用字典:

jobs = {"1" : Function1, "2" : Function2} # Relate arguments with functions
arg = sys.argv[1]
jobs[arg]() # invoke function
所以整个文件如下所示:

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(count, name):
    """Run lines 70 to 117."""
    for x in range(count):
        click.echo('Hello %s!' % name)

@click.command()
@click.option('--count', default=1, help='Number of farewells.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def bye(count, name):
    """Run lines 118 to 130."""
    for x in range(count):
        click.echo('Bye %s!' % name)

if __name__ == '__main__':
    hello()
import sys

def function1():
    # Some code

def function2():
    # More code

def main():
    jobs = {"1": function1, "2": function2}
    choosenOption = sys.argv[1]
    jobs[choosenOption]()

if __name__ == "__main__":
    main()

此外,我建议您阅读函数,函数的使用是编程的基础-

Python Fire是一种用Python创建CLI的简单方法,Google支持它


显然,要做的事情是将不同的部分组织成不同的可调用项,例如函数,并根据输入命令调用它们。关于乔布斯的关注的证明={1:一些乐趣,2:其他乐趣};jobs[user_choice]。谢谢,我了解函数,事实上,我有一个关于我正在使用的函数的部分。我的程序相当大,所以我应该将我正在使用的所有函数复制并粘贴到函数1和函数2中吗?这不是重复的吗?如果已经定义了函数,那么只需在函数1或函数2中调用它们。我不认为这是重复的。简单:def function 1:foo;酒吧