小编Eri*_*ouf的帖子

我可以检查值是由默认提供的还是由用户提供的?

使用 时,是否有一种方法argparse可以判断字段是否具有值,因为用户指定了该值,还是因为未指定而获得了默认值?注意:我还想考虑用户明确指定默认值的情况。

我想用来argparse处理命令行参数,并且我想使用formatter_class=argparse.ArgumentDefaultsHelpFormatter显示未指定字段的默认值。此外,我想从配置文件中读取值。

如果用户在命令行上指定一个值,我想确保使用该值(即使该值与默认值匹配,但已明确说明)。如果用户没有指定值,但在配置文件中找到了一个值,我想使用它。如果用户没有在命令行上指定,并且配置文件中没有值,那么我想使用上面使用语句中显示的默认值。

所以,我可能会像这样设置解析

parser = parser = argparse.ArgumentParser( description="""Tool with many ways to get values""", formatter_class=argparse.ArgumentDefaultsHelpFormatter )
parser.add_argument( '-p', '--path', help="The path to a file to read", default="data.csv" )
parser.add_argument( '-c', '--conf', help="The config file to use", default="config.txt" )
Run Code Online (Sandbox Code Playgroud)

也许还有很多其他参数。

现在,我还想读取一个配置文件,其中可能包含一个值

data_path = data2.csv
Run Code Online (Sandbox Code Playgroud)

因此,如果用户-p在命令行上指定 a,我想读取该文件;如果他们不这样做并且我使用该配置文件,我想阅读data2.csv;如果我使用未定义且未data_path指定的配置文件-p,我想使用默认值data.csv

对我来说,主要复杂的情况是,如果用户指定-p data.csv,那么它将具有默认值,但应优先于配置文件。

或其他类似的工具是否argparse有办法判断参数是通过默认设置还是由用户显式设置?

python argparse

7
推荐指数
1
解决办法
1100
查看次数

Linux内核 - "放置"inode是什么意思?

我在iput函数顶部看到了以下注释:

/**
 *  iput    - put an inode
 *  @inode: inode to put
 *
 *  Puts an inode, dropping its usage count. If the inode use count hits
 *  zero, the inode is then freed and may also be destroyed.
 *
 *  Consequently, iput() can sleep.
 */
Run Code Online (Sandbox Code Playgroud)

对我而言,这听起来不是"放"任何东西,而是"放弃"它.我知道这个drop_inode函数iput在某些情况下被调用,因此术语"put"的使用在这里更加令人困惑.

linux kernel inode linux-kernel

7
推荐指数
1
解决办法
792
查看次数

LINQ与多对多关系

所以我正在写一个"动态"的Linq查询.我创建了一个"选项"类,它包含可以作为查询一部分的所有动态选项.其中一些选项属性是List对象,它包含我想要返回的实体的ID,这些实体是SQL Server中多对多关系的一部分.一个快速的代码示例和表的描述可能会有所帮助(为了简洁起见,严重减少).

Table Cars: Id int PK,Model varchar(50),Year int

表颜色: Id int PK,名称varchar(50)

表CarsXColors: CarId int PK,ColorId int PK

public IEnumerable<Car> Search(SearchOptions options)
{
    var query = from car in ctx.Cars select car;

    // This works just fine
    if (options.MaxMileage.HasValue) query = query.Where(x => x.Mileage <= options.Mileage.Value);

    // How do I implement this pseudo code. options.Colors is a List<int>
    if (options.Colors.Count > 0)
    {
        query = query.Where(  -- select cars that are in the List<int> of colors --);
    }


    return …
Run Code Online (Sandbox Code Playgroud)

c# linq many-to-many entity-framework

5
推荐指数
1
解决办法
522
查看次数

缓冲区溢出调用函数

我正在学习缓冲区溢出,并发现了一个程序有点像这样的挑战:

int main() {
    do_something()
    return 0;
}

void do_something() {
    //get inputs
    printf("Did something.");
}

void do_something_else() {
    printf("Did something else.")
}
Run Code Online (Sandbox Code Playgroud)

假设 中存在缓冲区溢出do_something(),我将如何使其调用该函数do_something_else()

c buffer-overflow shellcode

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

Matlab中的函数实现

我需要在Matlab中编写单位步进函数: 在此输入图像描述

以下是我试图实现的方法:

function y = u(n)
    if n<0
        y=0;
    else y=1;
end
Run Code Online (Sandbox Code Playgroud)

我测试了它的不同参数值,它返回正确的值,但如果我定义数字数组n = [ - 2,-1,0,1,2]并调用test = u(n)它只返回值1.我应该怎么做才能使它返回数组,我的意思是应该为n的每个值评估函数,并将评估结果放在数组中.提前致谢

matlab function

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

如何要求用户猜测1到1000之间的数字

我正在尝试编写一些javascript代码,要求用户猜测1到1000之间的数字并将其输入到提示框中.如果用户猜对了,会弹出一个警告框,说明他们做对了.如果他们猜错了,会弹出另一个警告框,说他们错了,再试一次.

这里的问题是我不知道我必须做什么才能使代码无限循环,直到他们得到正确的答案.这是我到目前为止所拥有的:

var a = 489; // the number that needs to be guessed to win the game.

//var b stores whatever value the user enters.
var b = prompt("Enter a number in between 1 and 1000");

// if/else statement that test if the variables are equal.
if (b == a) {
    alert("You're right!");
} else {
    alert("Incorrect! Try again!");
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

硬币找零机 Python 程序

我正在参加初学者编程课程。我们必须进行一项制定变革者计划的练习。输入必须介于 0-99 之间,并且当输入在四者之间划分时,必须以 25 美分、10 角、15 分和 1 分表示。我编写了一个涉及循环和 while 的代码,但他想要更简单的代码和更小的代码。他给了我这个作为帮助我的方式:

c=int(input('Please enter an amount between 0-99:'))
print(c//25)
print(c%25)
Run Code Online (Sandbox Code Playgroud)

他告诉我们,这基本上就是我们所需要的,只需要添加一毛钱、五分钱和便士即可。我用一角硬币、五分硬币和便士尝试了多种方法,但我无法得到正确的输出。每当我输入“99”时,我会得到 3 分硬币、2 分硬币、1 分硬币和 0 分硬币。如果有人能够帮助我,那就太好了!

python

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

在python中合并两个字典

嗨我有两本字典如下

{'abc':1,'xyz':8,'pqr':9,'ddd': 22}
{0:'pqr',1:'xyz',2:'abc',3:'ddd'}
Run Code Online (Sandbox Code Playgroud)

我的目标是以下列格式获取新词典

{2:1 1:8 0:9 3:22}
Run Code Online (Sandbox Code Playgroud)

我正在梳理第一个字典的值作为新字典的值和字典2的键,其值与字典1的键匹配作为新字典的键.

我写了一些代码如下:

for list1elem in listofemail[1:]:
    print(list1elem)
    for the_key, the_value in list1elem.items():
        the_key = [k for k, v in vocab_dic.items() if v == the_key]
Run Code Online (Sandbox Code Playgroud)

但是我的代码并没有用新的密钥替换旧密钥.我的两个字典都很大,包含25000个键/值对.所以需要花费很多时间.最快的方法是什么?

python dictionary

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

如何在svn日志消息中格式化文本(例如使文本变为粗体)?

如何在svn commit日志消息中格式化文本?使用*text*不会使文本变粗,*我在使用时会在消息中显示svn log.

svn version-control formatting tortoisesvn svncommit

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

随时扩展ListView单元格的大小

我正在尝试实现一个解决方案,以增加ListView Cell使用时Xamarin Forms(和自定义渲染器,如果需要)的大小.

我对C#还是很陌生,对我来说,数据绑定的想法仍然有点不清楚,但是,似乎这就是解决这个问题的方法(也许就像绑定Height/ HeightRequest属性一样)细胞?).

到目前为止,我的尝试都没有成功.

如果有人能给我一个正确的方向,那将非常感激.

谢谢!

xamarin xamarin.forms

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

如何使用echo用引号包装变量

我有一个变量,例如,pos=11111.

我想要

echo "$pos",显示

"11111"而不是11111.

我试着用

echo "\"$pos\""
Run Code Online (Sandbox Code Playgroud)

但它错过了最后一个引用,如图所示:

"11111
Run Code Online (Sandbox Code Playgroud)

他们的解决方案是什么?

bash

0
推荐指数
1
解决办法
89
查看次数

bash将管道中的值返回bash

我们有一个脚本,带有返回码.例如

#!/bin/bash
exit 42
Run Code Online (Sandbox Code Playgroud)

哪个工作正常:

$ ./script ; echo $?
42
Run Code Online (Sandbox Code Playgroud)

但如果我去:

$ bash << EOF
./script ; echo $?
EOF
0
Run Code Online (Sandbox Code Playgroud)

所以它打印0,而人们会期望它仍然打印42

bash pipe

0
推荐指数
1
解决办法
101
查看次数

从Perl脚本中的命令行提取作为参数给出的名称

我是脚本语言的新手,我有一个任务,说我需要从erl命令行中的给定参数中提取名称.

我这样调用Perl脚本

./perl.plx file.txt
Run Code Online (Sandbox Code Playgroud)

我只需得到那个file名字,而不是整个名字file.txt

bash shell perl command-line command-line-arguments

-4
推荐指数
1
解决办法
308
查看次数