小编mor*_*ort的帖子

Argparse:"可选参数"下列出的必需参数?

我使用以下简单代码来解析一些参数; 请注意,其中一个是必需的.不幸的是,当用户在不提供参数的情况下运行脚本时,显示的用法/帮助文本并不表示存在非可选参数,我觉得这非常令人困惑.如何让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)

python argparse

187
推荐指数
6
解决办法
14万
查看次数

sed:仅打印匹配组

我想获取最后两个数字(一个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)

如何仅打印与组中的正则表达式匹配的行的部分?

regex sed

119
推荐指数
5
解决办法
19万
查看次数

Ansi-C中的单行注释

我习惯于用//Java和Visual Studio标记单行注释,并且对于Ansi-C不存在这一点感到惊讶.使用/* my comment */非常烦人.使用Ansi-C时是否还有其他方法可以标记单行注释?

c gcc

25
推荐指数
3
解决办法
2万
查看次数

使用git for VS2010项目:无法添加文件*.opensdf

我正在使用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的新手,这个文件的用途是什么?

谢谢!

莫特

c++ git visual-studio-2010

24
推荐指数
1
解决办法
1万
查看次数

在Ubuntu上安装了clang ++ 3.6,无法选择替代

我刚刚在我的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适用于该版本.

linux ubuntu clang++

22
推荐指数
2
解决办法
2万
查看次数

Haskell:检查两个列表是否相等

我要检查,如果两个列表AB相等,即a1 == b1, a2 == b2,...

我有一个有效的解决方案:

all (\x->x) zipWith $ (==) A B
Run Code Online (Sandbox Code Playgroud)

另一个想法是递归地做到这一点:a:as, b:bs; 检查a1==b1并调用该函数与其余列表asbs.但是,有没有更简单,更易读的方法来做到这一点?

haskell list

21
推荐指数
3
解决办法
2万
查看次数

将std :: wstring转换为QString的最佳方法

我目前正在开发一个更大的项目,其中"逻辑"在标准C++中实现,所有字符串都在处理,std::wstringUI部分使用Qt实现,因此必然QString(奖励问题:这是真的吗?).

连接这两个世界的最佳方式是什么?

我知道我可以用类似的东西

std::wstring wideString;
QString qtString = QString::fromStdWString(wideString);
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方式,涉及更少的打字.一个用户定义的操作员出现在我的脑海中,但我没有足够的经验来解决这个问题.

如果有人能指出我正确的方向,我会很高兴的.

c++ qstring qt wstring

17
推荐指数
1
解决办法
1万
查看次数

UDP/TCP中使用的伪标头的意义是什么?

为什么在UDP校验和的计算中,Pseudo标头被添加到UDP数据报之前?这背后的理性是什么?

networking udp tcp

14
推荐指数
4
解决办法
3万
查看次数

通过引用调用和复制/恢复之间的区别是什么

调用引用和复制/恢复之间的结果有何不同?

背景:我目前正在研究分布式系统.关于远程过程调用的参考参数的传递,该书指出:"通过引用的调用已被复制/恢复替换.虽然这并不总是相同,但它已经足够了".我理解原则上如何通过引用和复制/恢复工作,但我没有看到结果的差异在哪里?

rpc terminology parameter-passing

14
推荐指数
2
解决办法
1万
查看次数

我需要从javascript调用c ++函数.有可能吗?

有c ++库,我需要从客户端浏览器上运行的JavaScript对这个库进行函数调用,该库只驻留在客户端机器上.如何加载库并访问c ++库提供的接口(函数)?该库主要包含算法和渲染调用.

javascript c++ web

14
推荐指数
1
解决办法
3663
查看次数