打印应用程序的"用法"时,是应该在stdout还是stderr上完成?
根据应用程序,我看过几个案例,但似乎没有一个规则.也许我错了,有一个很好的做法.在那种情况下,它是什么?
如果您查看Mathematica8中的Combinatorica
包,您将找到函数的定义.我有兴趣知道的是Mathematica如何知道如何格式化使用信息.有些东西告诉我,我没有看正确的文件.无论如何,让我们尝试以下方法:(mathematicapath)/AddOns/LegacyPackages/DiscreteMath/Combinatorica.m
Cofactor::usage = "Cofactor[m, {i, j}] calculates the (i, j)th cofactor of matrix m."
Run Code Online (Sandbox Code Playgroud)
该行是上述文件中的682行.现在如果我们在mathematica笔记本中运行它并且我们使用,?Cofactor
我们将看到完全相同的消息.但是如果我们得到包,那么消息就被格式化了.这是一个截图:
注意函数中的m,i和j是如何变化的,并且在消息中添加了一个双箭头.我认为箭头已添加到邮件中,因为它存在文档.有人可以解释这种行为吗?
编辑:这是我的笔记本文件的屏幕截图,自动保存到m文件.
正如你所看到的那样,L
并且M
在斜体时代是新的罗马.现在我将加载包并查看用法.
到现在为止还挺好.现在让我们看一下文档中心.我会寻找这个功能LineDistance
.
如您所见,它显示了一个奇怪的消息.在这种情况下,我们只想显示没有任何样式的消息.我仍然无法弄清楚Combinatorica
包是如何做到的.我按照这个来制作索引,以便doc中心可以显示摘要.摘要本质上是使用显示.如果我需要更具体,请告诉我.
我正在编写一个控制台应用程序,它正在迅速获得许多命令行参数和标志.出于这个原因,我希望用户能够访问这些标志的描述以及它们的服务目的.
我能想到几种可能的解决方案
我可以将整个消息粘贴到我的程序中的变量中,并在用户输入mycmd --help
或类似的东西时将其打印到屏幕上.优点,保持可执行和不可编辑,缺点是代码,因为我会有类似下面的东西漂浮.
const char[] helpmsg = "Line1\n"
"Line2\n"
"...\n"
"LineN\n";
Run Code Online (Sandbox Code Playgroud)我可以man
为我的程序编写一个条目,但这不是非常便携,因为该应用程序将在Windows和Linux上使用得非常相似.
我知道这个问题可能是一个品味问题,但我很好奇是否有其他解决方案,我没有想到人们过去使用过.
理想情况下,开发人员(目前是我)很容易编辑和保持更新,但其他人不能真正搞砸它.
我正在开发一个小型Python程序,需要获取一些命令行参数并使用argparse来显示用法消息.我有这2行
parser.add_argument("-r",type=int,default=1)
parser.add_argument("-c",type=int,default=2)
Run Code Online (Sandbox Code Playgroud)
并且要求是我向用户显示以下消息:
*usage: myprogram.py [-h] [-r ROWS] [-c COLUMNS]*
Run Code Online (Sandbox Code Playgroud)
然而,我向用户展示的是 -
*usage: myprogram.py [-h] [-r R] [-c C]*
Run Code Online (Sandbox Code Playgroud)
如何将[-r R]转换为[-r ROW](并以相同的方式[-c C]转换为[-c COLUMNS])?
我已经看了很多argsparse文档但没有用...