python - “命名空间”对象不可迭代
问题描述
尝试使用 argparse 传递不确定数量的整数。当我输入:py main.py 3 2
%%writefile main.py
import sorthelper
import argparse
integers = 0
#top-level parser creation
parser = argparse.ArgumentParser("For sorting integers")
nargs = '+' #-> gathers cmd line arguments into a list
args = parser.add_argument('-f', metavar='N', type=int, nargs='+', help='yada yada yada')
args = parser.parse_args()
print(sorthelper.sortNumbers(args))
%%writefile sorthelper.py
def sortNumbers(args):
sorted(args)
错误命名空间参数不可迭代
我认为是因为我传递的参数类型不正确。在阅读了所有文档后,我发现我无法弄清楚如何进行这项工作。我希望程序对我传递的数字进行排序。
解决方案
parser.parse_args()
返回一个Namespace
object,它是一个对象,其属性表示已解析的标志。它是不可迭代的。
似乎您想获取 after 给出的命令行参数-f
,在这种情况下,您将从对象中取出该特定标志Namespace
:
print(sorthelper.sortNumbers(args.f))
此外,您当前拥有的代码将 print None
,因为sortNumbers()
不返回任何内容。内置sorted()
函数没有就地排序(list.sort()
如果你想使用它的话),所以你必须实际做
def sortNumbers(args):
return sorted(args)
推荐阅读
- javascript - 如何在不刷新网页的情况下运行 php 文件?
- maven - 未找到 hbase spark 模块
- github-actions - 基于不同分支推送构建和推送到不同 ECR 的 GitHub CI 脚本
- javascript - 图片出现瞬间消失
- python - Python - 读取每一行文本文件并将每一行传递给变量
- javascript - OnClick 功能在 Chrome 上不起作用?
- apache-spark - 无法将 Dataframe 结果写入 Hive 表/LFS 文件
- discord - 投票问题,增加正确数量的反应。(d.py)
- web-services - Nginx 将请求转发到本地 IP
- typescript - 如何强制 TypeScript 中已声明变量的类型?