我正在使用R包argparse来解析R脚本中的命令行参数。
为了便于阅读,我想在脚本的“描述”中和参数的帮助中添加换行符。但是,我不能这样做......让我们看一个例子。鉴于此脚本:
#!/usr/bin/env Rscript
require(argparse)
docstring<- "Description\nDone"
parser<- ArgumentParser(description= docstring)
args<- parser$parse_args()
使用 -h 执行时,应打印:
Description
Done
但是,我收到了错误:
Error in rjson::fromJSON(output) : unexpected character 'F'
Calls: <Anonymous> -> <Anonymous> -> <Anonymous>
Execution halted
像 paste(“Description”,“Done”,sep ='\ n')这样的docstring的变体同样不成功。
编辑:传递RawTextHelpFormatter:没有运气。
parser<- ArgumentParser(description= docstring, RawTextHelpFormatter= TRUE)
知道如何在argparse中添加换行符吗?
非常感谢!
的Dario
NB :在r-help上发帖:https://stat.ethz.ch/pipermail/r-help/2014-November/423722.html
sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] argparse_1.0.1 proto_0.3-10
loaded via a namespace (and not attached):
[1] findpython_1.0.1 getopt_1.20.0 rjson_0.2.13
答案 0 :(得分:2)
经过一段时间的游戏并查看代码后,我找到了自己答案的解决方案:使用formatter_class= 'argparse.RawTextHelpFormatter'
并正确转义换行符:
#!/usr/bin/env Rscript
require(argparse)
docstring<- "DESCRIPTION \\n\\
Do stuff \\n\\n\\
Do more stuff"
parser<- ArgumentParser(description= docstring, formatter_class= 'argparse.RawTextHelpFormatter')
args<- parser$parse_args()
现在它正确地给出了(省略了启动消息):
./testParse.R -h
usage: ./testParse.R [-h]
DESCRIPTION
Do stuff
Do more stuff
optional arguments:
-h, --help show this help message and exit
@hpaulj你的提示是正确的,我花了一段时间来弄清楚它!