Python 结合向用户提问使用argparser
因此,我试图使我的代码可用,尽管Python 结合向用户提问使用argparser,python,argparse,Python,Argparse,因此,我试图使我的代码可用,尽管argparse,但我希望大多数用户不太熟悉在控制台中运行某些东西。这是我通过提问请求输入的一种方式 比如: 依此类推,使用argparser是否可能,或者我是否应该寻找其他可以使用输入的东西 import argparse args = argparse.ArgumentParser() args.name = input("enter your name:\n") print("Your name is :\n",args.name) argparse
argparse
,但我希望大多数用户不太熟悉在控制台中运行某些东西。这是我通过提问请求输入的一种方式
比如:
依此类推,使用argparser
是否可能,或者我是否应该寻找其他可以使用输入的东西
import argparse
args = argparse.ArgumentParser()
args.name = input("enter your name:\n")
print("Your name is :\n",args.name)
argparse
只提供命令行参数,不支持提示用户,但它确实使实现类似的功能变得容易。它支持可选参数,并且在解析后为您提供可以使用的名称空间对象。您只需要自己实现提示并将其分配到名称空间中
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path', nargs='?')
parser.add_argument('target', nargs='?')
args = parser.parse_args()
print(args)
if args.path is None:
args.path = input('Please provide the path to the data: ')
if args.target is None:
args.target = input('What is the target variable? ')
print(args)
测试运行:
$./test.py/somepath垃圾邮件#提供了所有参数
命名空间(路径='/somepath',目标='spam')
命名空间(路径='/somepath',目标='spam')
$./test.py/otherpath#忘记了“目标”
命名空间(路径='/otherpath',目标=无)
目标变量是什么?鸡蛋
命名空间(路径='/otherpath',目标='egs')
$./test.py#未提供任何参数
命名空间(路径=无,目标=无)
请提供数据路径:/anotherpath
目标变量是什么?火腿
命名空间(路径='/anotherpath',目标='ham')
如果您有两个以上的参数,我建议您干燥上述代码,如下所示:
arg_prompts = [
('path', 'Please provide the path to the data: '),
('target', 'What is the target variable? '),
]
for arg, prompt in arg_prompts:
if getattr(args, arg) is None:
setattr(args, arg, input(prompt))
arg_prompts = [
('path', 'Please provide the path to the data: '),
('target', 'What is the target variable? '),
]
for arg, prompt in arg_prompts:
if getattr(args, arg) is None:
setattr(args, arg, input(prompt))