小编etu*_*rdu的帖子

当删除失败时,"rd"退出并将errorlevel设置为0,等等

我正在编写批处理(.bat)脚本,我需要处理删除文件夹失败的情况.我正在使用%errorlevel%捕获退出代码,但在rd命令的情况下它似乎不起作用:

C:\Users\edo\Desktop>rd testdir
Directory is not empty

C:\Users\edo\Desktop>echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)

为什么?你有什么建议?

windows error-handling cmd batch-file exit-code

13
推荐指数
2
解决办法
9728
查看次数

python3:使用.__ get __()将类方法绑定到类实例,但是为什么呢?

我知道如果你想为一个类实例添加一个方法,你不能像这样做一个简单的赋值:

>>> def print_var(self): # method to be added
        print(self.var)
>>> class MyClass:
        var = 5
>>> c = MyClass()
>>> c.print_var = print_var
Run Code Online (Sandbox Code Playgroud)

这确实会导致print_var行为像正常的函数,所以self参数不具有他的典型含义:

>>> c.print_var
<function print_var at 0x98e86ec>
>>> c.print_var()
Traceback (most recent call last):
  File "<pyshell#149>", line 1, in <module>
    c.print_var()
TypeError: print_var() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

为了让函数被认为是一个方法(即将它绑定到实例),我曾经使用过这段代码:

>>> import types
>>> c.print_var = types.MethodType(print_var, c)
>>> c.print_var
<bound method MyClass.print_var of <__main__.MyClass object at 0x98a1bac>>
>>> c.print_var()
5
Run Code Online (Sandbox Code Playgroud)

但我发现它 …

python methods monkeypatching descriptor python-3.x

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

python:生成整数分区

我需要生成给定整数的所有分区.
我发现Jerome Kelleher的这个算法对它来说是最有效的算法:

def accelAsc(n):
    a = [0 for i in range(n + 1)]
    k = 1
    a[0] = 0
    y = n - 1
    while k != 0:
        x = a[k - 1] + 1
        k -= 1
        while 2*x <= y:
            a[k] = x
            y -= x
            k += 1
        l = k + 1
        while x <= y:
            a[k] = x
            a[l] = y
            yield a[:k + 2]
            x += 1
            y -= 1
        a[k] …
Run Code Online (Sandbox Code Playgroud)

python performance combinatorics data-partitioning

8
推荐指数
2
解决办法
2915
查看次数

轻量级8字节散列函数算法

我需要从一个可变长度的字符串中提取一个8字节的摘要,所以我正在寻找一个我将在c/c ++中实现的算法.这将是微控制器上数字签名程序的一部分,因此它必须是:

  • 只需几行代码即可写入,因为固件必须尽可能少地保存;
  • 资源消耗低,特别是ram(最好小于100字节);
  • 足够强大,在字符串的任何一点更改单个字符都会改变整体摘要.

我看了一下现有的算法,比如crc64,但它们对我的平台来说似乎太重了.

c c++ hash digest

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

获取gnome-terminal的实际几何图形

在XI知道你可以得到一个窗口的几何形状xwininfo.

不幸的是,如果我从gnome-terminal中检索这样的几何体并使用它来启动另一个gnome-terminal --geometry ...,那么两个窗口的顶部和左边都不匹配.

实际上,新航站楼的东南移动了旧航站楼窗户装饰的宽度和高度.

如何启动与第一个完全重叠的新终端?

x11 gnome-terminal

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

PHP:«命令不同步»如果我调用结果存储过程后再次mysqli :: query()

我的数据库中有一个存储过程,它返回表中的所有记录:

CREATE PROCEDURE showAll()
BEGIN
    SELECT * FROM myTable;
END
Run Code Online (Sandbox Code Playgroud)

SP的工作方式与预期一致.但是,如果我在php脚本中调用它,然后我尝试再次查询数据库,它总是失败:

// $mysqli is a db connection

// first query:

if (!$t = $mysqli->query("call showAll()"))
    die('Error in the 1st query');

while ($r = $t->fetch_row()) {
    echo $r[0] . "<br>"; // this is ok
}

$t->free(); // EDIT (this doesn't help anyway)

// second query (does the same thing):

if (!$t = $mysqli->query("SELECT * from myTable"))
    die('Error in the 2nd query'); // I always get this error

while ($r = $t->fetch_row()) …
Run Code Online (Sandbox Code Playgroud)

php mysqli stored-procedures

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

检查两个变量是否具有来自两个不同集合的值,DRY方式

我有一系列的values(L,R,U,D)和两个变量,d并且newd包含其中一个变量.我需要检查是否dnewd相同的子集(L,RU,D).
我知道我可以这样做:

d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'}
Run Code Online (Sandbox Code Playgroud)

这确实是返回False,如果它们都具有值L,RU,DTrue其他.尽管如此,我觉得它还有很多.关于更干燥方法的一些建议?

python coding-style dry

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

在用户输入值时,在电子表格中附加行

我有一个字符串数组,我需要根据数组的大小将其附加到电子表格中,从第一列到第n列.

字符串可以表示几种类型的值,例如数字,日期等,因此必须在用户输入时将它们放在工作表中以保持其含义.

据我所知,Google API提供了两种附加值的方法,但它们似乎都不适合这种情况.这是我遇到的问题:

使用Google_Service_Sheets_AppendCellsRequest

这种方法的问题是我无法找到一种方法来设置用户输入的值.这是一个代码示例:

  // Build the CellData array
  $values = array();
  foreach( $ary_values AS $d ) {
    $cellData = new Google_Service_Sheets_CellData();
    $value = new Google_Service_Sheets_ExtendedValue();
    $value->setStringValue($d);
    $cellData->setUserEnteredValue($value);
    $values[] = $cellData;
  }
  // Build the RowData
  $rowData = new Google_Service_Sheets_RowData();
  $rowData->setValues($values);
  // Prepare the request
  $append_request = new Google_Service_Sheets_AppendCellsRequest();
  $append_request->setSheetId(0);
  $append_request->setRows($rowData);
  $append_request->setFields('userEnteredValue');
  // Set the request
  $request = new Google_Service_Sheets_Request();
  $request->setAppendCells($append_request);
Run Code Online (Sandbox Code Playgroud)

(完整的工作代码在这里)

即使使用CellData.setUserEnteredValue时,数据被解释为字符串,因为一个具有使用设置值ExtendedValue.setStringValue(或其他支持的方法,即setBoolValue,setFormulaValue,setNumberValue).

使用spreadsheets.values.append …

php google-sheets-api

5
推荐指数
0
解决办法
416
查看次数

获取函数`arguments` 作为键值对对象

在 JavaScript 中,可以通过 获取传递给函数的参数列表arguments,这是一个类似数组的对象:

>> function fun(a, b, c) { console.log(arguments) };  
undefined
>> fun(1, 2, 3);
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得一个包含每个参数的正式名称的对象?
也就是说,如果调用上述函数,他应该得到:

{a = 1, b = 2, c = 3}
Run Code Online (Sandbox Code Playgroud)

javascript arguments associative-array

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

在lambda函数中关闭变量

可能重复:
(lambda)函数闭包在Python中捕获了什么?

我有这个python代码,它将几个lambda函数放在一个字典中:

dictfun = dict()
for txt in ("a", "b", "c"):
    dictfun[txt] = lambda: "function " + txt
Run Code Online (Sandbox Code Playgroud)

这些函数只返回一个字符串,其中包含调用它们的参数.
我希望看到像function afor dictfun["a"](),function bfor dictfun["b"]()等的输出,但这就是我得到的:

>>> dictfun["a"]()
'function c'
>>> dictfun["b"]()
'function c'
>>> dictfun["c"]()
'function c'
Run Code Online (Sandbox Code Playgroud)

它们似乎都评估txt到它设置的最后一个值,即它的当前值.总之,变量不会关闭到lambdas中.我甚至可以这样做:

>>> txt = "a"
>>> dictfun["c"]()
'function a'
Run Code Online (Sandbox Code Playgroud)

我如何才能关闭txtlambda函数以获得预期的输出?

python lambda closures

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