我使用以下简单代码来解析一些参数; 请注意,其中一个是必需的.不幸的是,当用户在不提供参数的情况下运行脚本时,显示的用法/帮助文本并不表示存在非可选参数,我觉得这非常令人困惑.如何让python指示参数不是可选的?
这是代码:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Foo')
parser.add_argument('-i','--input', help='Input file name', required=True)
parser.add_argument('-o','--output', help='Output file name', default="stdout")
args = parser.parse_args()
print ("Input file: %s" % args.input )
print ("Output file: %s" % args.output )
Run Code Online (Sandbox Code Playgroud)
在不提供必需参数的情况下运行代码时,我得到以下输出:
usage: foo.py [-h] -i INPUT [-o OUTPUT]
Foo
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Input file name
-o OUTPUT, --output OUTPUT
Output file name
Run Code Online (Sandbox Code Playgroud) 我想获取最后两个数字(一个int,一个float;后跟可选的空格)并仅打印它们.
例:
foo bar <foo> bla 1 2 3.4
Run Code Online (Sandbox Code Playgroud)
应打印:
2 3.4
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下内容:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
Run Code Online (Sandbox Code Playgroud)
会给我的
foo bar <foo> bla 1 replacement
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将其替换为组1,则会打印整行.
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
Run Code Online (Sandbox Code Playgroud)
如何仅打印与组中的正则表达式匹配的行的部分?
我习惯于用//Java和Visual Studio标记单行注释,并且对于Ansi-C不存在这一点感到惊讶.使用/* my comment */非常烦人.使用Ansi-C时是否还有其他方法可以标记单行注释?
我正在使用git来跟踪VS2010中的C++项目.我正在使用stackoverflow上发现的忽略模式,它通常不会排除*.opensdf文件.不幸的是,当尝试提交文件时,我收到以下错误:
error: open("foo.opensdf"): Permission denied
error: unable to index file foo.opensdf
fatal: adding files failed
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误以及如何避免错误?由于我是VS2010的新手,这个文件的用途是什么?
谢谢!
莫特
我刚刚在我的Ubuntu机器上安装了clang ++ 3.6,但无法将其设置为默认的c ++编译器.
sudo update-alternatives --config c++
Run Code Online (Sandbox Code Playgroud)
告诉我
There is only one alternative in link group c++ (providing /usr/bin/c++): /usr/bin/g++
Nothing to configure.
Run Code Online (Sandbox Code Playgroud)
和clang ++没有显示出来
sudo update-alternatives --query c++
Run Code Online (Sandbox Code Playgroud)
要么(这是预期的).但编译器肯定有效:
which clang++-3.6
/usr/bin/clang++-3.6
Run Code Online (Sandbox Code Playgroud)
我的操作系统版本是Ubuntu 14.04.1 LTS.
我需要做些什么来update-alternatives包括clang ++ 3.6?
注意:我之前使用过clang3.4,但删除了它,因为它不支持我需要的所有c ++ 11功能.这似乎只是安装clang ++包时安装的版本(我特意安装了clang ++ 3.6); update-alternativesDID适用于该版本.
我要检查,如果两个列表A和B相等,即a1 == b1, a2 == b2,...
我有一个有效的解决方案:
all (\x->x) zipWith $ (==) A B
Run Code Online (Sandbox Code Playgroud)
另一个想法是递归地做到这一点:a:as, b:bs; 检查a1==b1并调用该函数与其余列表as和bs.但是,有没有更简单,更易读的方法来做到这一点?
我目前正在开发一个更大的项目,其中"逻辑"在标准C++中实现,所有字符串都在处理,std::wstringUI部分使用Qt实现,因此必然QString(奖励问题:这是真的吗?).
连接这两个世界的最佳方式是什么?
我知道我可以用类似的东西
std::wstring wideString;
QString qtString = QString::fromStdWString(wideString);
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方式,涉及更少的打字.一个用户定义的操作员出现在我的脑海中,但我没有足够的经验来解决这个问题.
如果有人能指出我正确的方向,我会很高兴的.
为什么在UDP校验和的计算中,Pseudo标头被添加到UDP数据报之前?这背后的理性是什么?
调用引用和复制/恢复之间的结果有何不同?
背景:我目前正在研究分布式系统.关于远程过程调用的参考参数的传递,该书指出:"通过引用的调用已被复制/恢复替换.虽然这并不总是相同,但它已经足够了".我理解原则上如何通过引用和复制/恢复工作,但我没有看到结果的差异在哪里?
有c ++库,我需要从客户端浏览器上运行的JavaScript对这个库进行函数调用,该库只驻留在客户端机器上.如何加载库并访问c ++库提供的接口(函数)?该库主要包含算法和渲染调用.