- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Argparse将 shell 输入解析为我的 Python 函数。
棘手的部分是此脚本首先读取一个文件,该文件部分确定了 Argparse 可用的参数类型(这是一个 JSON 文件,其中包含用户可以指定要输出的数据的标准)。
但在将这些参数添加到我的解析器之前,我想读入一些与文件读取本身相关的参数。 (例如,是否修复输入文件的格式)。有点像这样:
test.py (fix_formatting=True, **more arguments added later)
当我尝试运行 args = parser.parse_args()
两次时,在初始输入之后和添加更多键之后,事情分崩离析:Argparse 完全可以预见地提示一些用户输入是 无法识别的参数:
。我想我可能会使用 subparsers为此。
所以我尝试了以下变体(尽可能按照 docs 中的示例):
def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='sub-command help')
settingsparser = subparsers.add_parser('settings') #i want a subparser called 'settings'
settingsparser.add_argument('--fix_formatting', action='store_true') #this subparser shall have a --fix_formatting
然后我尝试像这样只解析“设置”部分:
settings=parser.parse_args(['settings'])
这似乎有效。但是后来我添加了其他键,事情就坏了:
keys=['alpha','beta','gamma','delta']
for key in keys:
parser.add_argument("--"+key, type=str, help="X")
args = parser.parse_args()
如果我为来自键的任何参数解析任何输入,Argparse 会提示我做了一个无效的选择:[...](从“设置”中选择)
。现在我不明白为什么我必须从“设置”中进行选择;文档说解析
will only contain attributes for the main parser and the subparser that was selected by the command line (and not any other subparsers)
我的理解错误是什么?
如果这是错误的方法,那么如何在解析另一位之前解析一位输入?
非常感谢任何帮助!
最佳答案
parse_args
调用 parse_known_args
。这将返回 args
namesparse 以及它无法处理的字符串列表(来自 sys.argv
)(extras
)。如果此列表不为空,parse_args
会引发此错误。
https://docs.python.org/3/library/argparse.html#partial-parsing
因此,如果您想解析某些输入,parse_known_args
很有用。
sys.argv
保持不变。除非您传递 extras
,否则对解析器的后续调用(无论是否是原始解析器)都会再次使用它。
我认为子解析器在这里对您没有帮助。它们不适用于延迟或两阶段解析。我建议首先使用子解析器的文档示例。
对于主解析器,子解析器看起来像
subparsers = parser.add_argument('cmd', choices=['select',...])
换句话说,它添加了一个位置参数,其中 choices
是您定义的子解析器名称。这可能会帮助您了解为什么它希望您命名为 select
。通常需要位置。
(在最近的版本中有一个异常(exception),https://stackoverflow.com/a/22994500/901925)
关于python - 逐位解析 argparse 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37824316/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!