问题标签 [optionparser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
743 浏览

ruby - Ruby OptionParser empty switch "-" behavior

EDITED:

I've wrote code that uses OptionParser to handle command line input gracefully. I am facing two major hits.

  1. Passing an empty switches '-' doesn't give an error. Of course some programs take that as valid, but mine shouldn't.
  2. The program requires two mandatory switches, but it accepts one switch without complaining! e.g. program.ruby -f foo -b bar is the valid input and both switches are :REQUIRED. But providing only one switch passes without problem and this is not the desired behavior.

For the first case I've done this:

It works fine. But is this the proper way of doing it?

For the second case, I've looked around for a solution within the OptionParser.new block but I couldn't find one. e.g.

Doing it outside the OptionParser.new block is the normal way?

0 投票
0 回答
58 浏览

ruby - 如何在 OptionParser 中处理单个“-”(破折号)?

可能重复:
Ruby OptionParser 空开关“-”行为

我编写了使用 OptionParser 优雅地处理命令行输入的代码。我面临两个重大打击。

  1. 传递一个空开关 '-' 不会产生错误。
  2. 该程序需要两个强制开关,但它接受一个开关而不会抱怨!

对于第一种情况,我这样做了:

编辑(很快就成功了):它适用于空开关的情况,但也适用于开关不为空的情况。我怎样才能做到这一点?

对于第二种情况,我在 OptionParser.new 块中四处寻找解决方案,但找不到。在 OptionParser.new 块之外做是正常的方式吗?

0 投票
3 回答
2275 浏览

python - 在 Python 中使用 optparse 定义变量

我很好奇如何使用 optparse 设置变量。我这样运行程序;

程序名.py -dc:\users\\etc\etc\etc

我希望能够使用 -d C:\Users\\etc\etc 来填充一个名为“path”的变量,我稍后会在程序中使用它。这可以做到吗?这是我拥有的选项解析器代码。

我稍后调用 Path 变量,我用它来填充字典。

我得到的错误是:

E:>japp_id.py -d "C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\ AutomaticDestinations" Traceback(最近一次调用最后一次):文件“E:\japp_id.py”,第 30 行,用于os.listdir(path) 中的 ids: NameError: name 'path' is not defined

0 投票
1 回答
3106 浏览

ruby - Ruby OptionParser 抛出 MissingArgument

让我先说两件事。

1) 我已经在 Stack Overflow 和 Google 上搜索过这个答案。
2) 今天是我第一次尝试弄乱 Ruby。

好吧酷。所以我正在尝试构建一个 Ruby 脚本,我可以使用 Homebrew 使用单个命令安装 MySQL、PHP、Redis 和 xdebug。这个命令看起来像:

./phpserver.rb --with-php --with-mysql --with-xdebug --with-redis

但是,当我运行上述命令时,我收到“缺少的参数:--with-redis”。如果我通过“--with-redis=1.0”强制使用 Redis 版本或者我不包含该选项,则此错误消失。

这些选项都不是强制性的(是的,我知道脚本还没有处理零选项)。

我完全被难住了,如果有一个明显的答案你想把我链接到那很好。我为我缺乏 Ruby 知识而道歉,这是一个帮助我首先进入 Ruby 的辅助项目。

这是我的脚本:

0 投票
2 回答
3336 浏览

python - 给定选项时为 optionparser 设置默认选项

我有一个解析可选 --list-something 选项的 python 选项解析器。我还希望 --list-something 选项有一个可选参数(一个选项)

在这里使用参数default="simple"不起作用,否则 simple 将始终是默认值,不仅是在给出 --list-something 时。

上面的代码产生了这个:

但我希望这发生:

我想要在 python 2.4 到 3.0 之前开箱即用的东西(不包括 3.0)

由于 argparse 仅在 python 2.7 中引入,这不是我可以使用的。

0 投票
2 回答
699 浏览

python - python OptionParser.has_option 错误

我的程序中有以下几行

上面的打印语句正在打印,因为即使没有为此脚本指定 -t 选项, parser.has_option("-t") 的评估结果也为 true。我在这里错过了什么吗?在此先感谢您的帮助。

0 投票
0 回答
609 浏览

python - 大型项目中 OptionParser 和 sphinx-build 的冲突该如何解决?

我有一个大型 Python 项目,其中包含许多我不想接触的外部库,我想用 sphinx 生成文档。我的问题是,每当我执行“make html”时,我都会收到此错误:

我已经发现当我要记录的某些目录中有 OptionParser 时会出现此问题(OptionParser 与 sphinx 冲突吗?)。实际上,我有很多脚本在这些目录中使用 OptionParser 并且不使用if __name__ == "__main__": .... 我的问题是:

如何在不触及任何这些脚本的情况下生成文档?

有没有办法排除这些文件/路径?我已经在我的 conf.py 中尝试了 exclude_patterns 但这不起作用。我不知道为什么。有没有办法捕捉到这个错误?

更新

问题原来是setup.py树中的一个文件,由autodoc.

0 投票
0 回答
78 浏览

ruby - Ruby OptionParser:处理所有未指定的选项

我正在尝试自定义处理器中未指定的所有选项OptionParser。但是parse当找到第一个未知选项时会引发异常。

是否可以获取所有未处理的参数并手动处理它们?

0 投票
1 回答
243 浏览

ruby - Ruby OptionParser: 2 options, 1 argument

I am attempting to use OptionParser to read in multiple options and have them all act on a single filename. Ex: myprogram.rb -a -b file.txt How can I make 2 options share a mandatory argument while also allowing things like -h to run without parameters? Currently the above line just makes -a take -b as its parameter.

EDIT:

What it is doing:

What I need it to do:

Note:

These commands should be able to run independently as well as concurrently similar to ls -a .., ls -l .. and ls -a -l .. However NEITHER command should work if there is no filename given. Ideally this solution should work with any n number of options.

0 投票
2 回答
1673 浏览

ruby - OptionParser 解析参数表单文件而不是命令行

我正在使用 Ruby 执行带有命令行参数的代码。现在我尝试使用具有不同选项的同一程序,因此我将选项放在一个文件中,并且我希望程序读取每一行解释选项并相应地执行程序。

但我得到这个错误。"C:/Ruby193/lib/ruby/1.9.1/optparse.rb:1348:in block in parse_in_order': undefined methodshift' for "--c execue --query unix --Servername abc123":String (NoMethodError)"

我知道它读取文件并将该行视为字符串。但想知道是否有办法克服这个移位错误并将该行视为在命令提示符中输入。或任何更好的解决方案。

这是我的代码。

该文件的内容如下 --c execue --query unix --Servername abc123

我也尝试使用 micro-optparse 但面临同样的错误。任何解决方法?

更新: 根据“@mu 太短”的建议,我尝试了以下选项。end.parse!("#{Shellwords.shellsplit(line)}") 和/或 end.parse!(Shellwords.shellsplit(line))。但他们都没有工作。

我还尝试使用“line = line.split("\t")" 将行拆分为数组,然后使用 end.parse!(line)。输出为 --c execue --query unix --Servername abc123

但现在我收到错误作为阻止:无效选项--c执行

更新:#2 查看错误,问题在于错误的参数(-c。但感谢用户“@mu 太短”建议使用 Array.

更新: 3 传递数组仅适用于短格式的参数,例如 -c,但是当提供长格式时,它会因无效参数错误而失败。

我没有看到关于 optparse 的太多文档。我什至尝试过微解析,但它需要默认值,这对我来说不是一个选项:(