python - 如何在 Python 中解析函数的参数?
问题描述
我一直在尝试了解有关如何使用 argparse 在 Python 中解析参数的教程。这是我传递命令行输入以便运行函数的方式吗?
import argparse
parser = argparse.ArgumentParser(description='A test')
parser.add_argument("--a", default=1, help="Test variable")
args = parser.parse_args()
def foo():
command_line_argument = args.a
bar = 2*args.a
print(bar)
return
if "__name__" == "__main__"
try:
while True:
foo()
except KeyboardInterrupt:
print('User has exited the program')
解决方案
这while True
对我来说看起来很奇怪——你是否要求读者继续提交输入,直到他们 CTRL+C ?因为如果是这样,那么使用 argparse 是错误的:请参阅获取用户输入
如果您打算使用单个参数,那么我会将解析器内容移动到 main 中,这是当脚本作为程序运行而不是导入时执行的内容。
另外,我会将参数传递给foo
而不是 args 块。
最后,我猜你希望收到一个号码,所以你需要type=int
或类似的。
import argparse
def foo(a):
bar = 2*a
print(bar)
return
if __name__ == "__main__":
try:
# set it up
parser = argparse.ArgumentParser(description='A test')
parser.add_argument("--a", type=int, default=1, help="Test variable")
# get it
args = parser.parse_args()
a = args.a
# use it
foo(a)
except KeyboardInterrupt:
print('User has exited the program')
所以:
$ python foo.py --a 1
2
推荐阅读
- rust - 当关联类型没有大小时,如何避免需要`std::marker::Sized`?
- php - Codeigniter 也在重定向上加载相同的视图
- javascript - 为什么我的 web 应用程序在发出几个请求将项目推送到我的 mongodb 数据库后暂停?
- java - 2D Checker Board Java 数组打印不正确
- visual-studio - Visual Studio Code - 无法在此平台上使用映像操作系统“linux”错误
- ios - 如何在用户默认值中保存对象列表?
- c# - X509Certificate2:使用私钥解密时访问被拒绝
- django - 为什么我的 Django 将原始 css 加载到我的 html 文件中?
- keyerror - 为 Ritcher 量表评估 Python 编程时出错
- sql - Excel 宏 sql 查询语法(日期时间)