首页 > 解决方案 > Python解析用户输入的方式与CLI输入相同吗?

问题描述

我正在构建一个 CLI,我刚刚发现了Fire,它是一种从命令行向函数传递参数的好方法。它非常干净和直观。

但是,我遇到的一个问题是我需要在程序仍在运行并且值在内存中时执行一些操作。所以为此我不能使用 Fire(或者至少我认为我不能)。但我想使用与 Fire 相同的东西。我认为我需要使用 input() 让用户输入一个字符串,但是我需要解释它。

对于那些不知道 Fire 是如何工作的人,这里是如何工作的。它将 CLI 命令转换为函数参数并使用这些值执行。

例子

command line:

function_name parameter1 parameter2 parameter3 --parameter6_name parameter6

python script:

def function_name(parameter1, parameter2, parameter3=0... parameter6_name='No'):

我可以想出几种方法,我可能会以粗略的方式手动进行此操作,但这会很困难,而且我认为我无法让它完全正确地工作。有没有像这样解析的现有方法?我已经尝试搜索了几个小时,但我不确定我是否知道针对此问题的正确搜索词。如果有人能指出我正确的方向,我将不胜感激。

编辑。说脚本称为script.py。我知道您可以使用 argparse 来调用:

script.py param1 param2 --param4_name param4

(认为​​我认为 Fire 更适合此目的)

我要做的不是在命令行命令期间传递参数以启动应用程序,而是在另一个 python 脚本运行时传递参数,使用类似 input() 的方法。前任。

python3 script.py
Type a search phrase for the option you want: input()
Choose a character to select the option: input()
Type the parameters for a function to call to use with that option: input()

option_func1 param1 param2 --param4_name param4

or 

option_func2 param1 param2 --param4_name param4

(然后它使用初始选项中的值使用这些参数运行该函数)

标签: pythonargumentscommand-line-interfaceparameter-passingargparse

解决方案


我建议使用argparse,一个模块可以很容易地编写用户友好的命令行界面


推荐阅读