小编iva*_*eev的帖子

如何让argparse从带有选项而不是前缀的文件中读取参数

我想知道如何使用python的argparse模块从命令行和文本文件中读取参数.我知道argparse的,fromfile_prefix_chars但这不是我想要的.我想要这个行为,但我不想要语法.我想要一个如下所示的界面:

$ python myprogram.py --foo 1 -A somefile.txt --bar 2
Run Code Online (Sandbox Code Playgroud)

当argparse看到-A时,它应该停止从sys.argv或我给它的任何东西读取,并调用我写的函数,它将读取somefile.text并返回一个参数列表.当文件用尽时,它应该继续解析sys.argv或其他什么.重要的是文件中的参数处理顺序发生(即:应该处理-foo,然后处理文件中的参数,然后是-bar,以便文件中的参数可以覆盖--foo,和 - bar可能会覆盖文件中的内容).

这样的事情可能吗?我可以编写一个自定义函数,将新参数推送到argparse的堆栈上,或者是那种效果吗?

python python-2.7 argparse

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

如何在vim中自动对齐python变量赋值行

我想在vim中自动对齐python变量赋值行.

例如,我想改变这个:

a = 1
banana = 2
Run Code Online (Sandbox Code Playgroud)

进入这个

a      = 1
banana = 2
Run Code Online (Sandbox Code Playgroud)

自动在vim.

有没有办法做到这一点?

vim

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

在非标准位置编译并使用带有open-zwave的python-openzwave

我手动编译python-openzwave以使用C++库.

我想用它作为Kodi插件(在Pi 3上运行的OpenELEC),所以不能使用标准安装.我编译了所有内容,下载了缺失sixlouie库,现在尝试运行hello_world.py.

我目前的目标结构如下:

- root
  - bin
      - .lib
      - config
        Alarm.o
        ...
        libopenzwave.a
        libopenzwave.so
        libopenzwave.so.1.4
        ...
  - libopenzwave
      driver.pxd
      group.pxd
      ...
  - louie
      __init__.py
      dispatcher.py
      ...
  - openzwave
      __init__.py
      command.py
      ...
  six.py
  hello_world.py
Run Code Online (Sandbox Code Playgroud)

但是当我运行hello_world.py时,我收到以下错误 -

Traceback (most recent call last):
  File "hello_world.py", line 40, in <module> 
    from openzwave.controller import ZWaveController 
  File "/storage/.kodi/addons/service.multimedia.open-zwave/openzwave/controller.py", line 34, in <module> 
    from libopenzwave import PyStatDriver, PyControllerState 
ImportError: No module named libopenzwave
Run Code Online (Sandbox Code Playgroud)

如果我移动libopenzwave.a …

c++ python z-wave

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

make pip忽略现有的轮子

如果a .whl在线可用,则pip始终安装它而不是从源代码编译.但是,对于某些特定模块,轮子恰好是为下一代处理器编译的,并且不在特定机器上运行.

如果我命令它只是下载包,那么它仍然下载轮而不是源.是否pip有某种机制来覆盖这种偏好?

python pip python-wheel

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

属性getter/setter在Python 2中没有任何效果

我对python中的属性有点困惑.请考虑以下代码

class A:
    @property
    def N(self):
        print("A getter")
        return self._N
    @N.setter
    def N(self,v):
        print("A setter")
        self._N = v

    def __init__(self):
        self._N = 1

class B:
    @property
    def N(self):
        print("B getter")
        return self.a.N
    @N.setter
    def N(self,v):
        print("B setter")
        self.a.N = v

    def __init__(self):
        self.a = A()

if __name__ == '__main__':
    b=B()
    b.N = 2
    print(b.N, b.a.N)
    b.N = 3
    print(b.N, b.a.N)
Run Code Online (Sandbox Code Playgroud)

B应该类似于A的包装器.它使用getter和setter来映射A的属性(当然也可以通过继承来实现).问题是,它只是在python2.6中没有按预期工作,而在python3中它是这样的:

> python2 test.py
A getter
(2, 1)
A getter
(3, 1)

> python3 test.py
B setter
A setter
B …
Run Code Online (Sandbox Code Playgroud)

python properties python-2.x getter-setter

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

澄清什么是heisenbug

我阅读了关于heisenbug的维基页面,但是不明白这个例子.任何人都可以详细解释一下吗?

heisenbug的一个常见示例是在使用优化编译器编译程序时出现的错误,但是在没有优化的情况下编译相同程序时则不会出现错误(通常是为了使用调试器进行检查).在调试时,优化程序通常保留在寄存器中的值通常会被推送到主存储器.例如,这可能会影响浮点比较的结果,因为存储器中的值可能比寄存器中的值具有更小的范围和精度.

terminology

10
推荐指数
2
解决办法
3670
查看次数

Internet Explorer中的"操作已中止"错误是什么?

我最近将JQuery的日期选择器控件添加到项目中.在Internet Exploder中,我收到以下错误消息:

Internet Explorer无法打开Internet站点

HTTP://本地主机/

手术终止

是什么导致了这个问题?

javascript internet-explorer

9
推荐指数
2
解决办法
9049
查看次数

通过翻转单元格组用零填充二维数组

有一个问题,我需要用零填充数组,具有以下假设:

  • 在数组中只能有01
  • 我们只能改变0110
  • 当我们1在数组中相遇时,我们必须将它更改为0,以便它的邻居也被更改,例如,对于如下所示的数组:
1 0 1
1 1 1
0 1 0
Run Code Online (Sandbox Code Playgroud)

当我们在(1,1)处更改元素时,我们得到了这样的数组:

1 1 1
0 0 0
0 0 0
Run Code Online (Sandbox Code Playgroud)
  • 我们无法改变第一行
  • 我们只能更改数组中的元素
  • 最终的结果是时候,我们必须改变数10零出数组

1)第一个例子,数组如下所示:

0 1 0
1 1 1
0 1 0
Run Code Online (Sandbox Code Playgroud)

答案是1.

2)第二个例子,数组如下所示:

0 1 0 0 0 0 0 0
1 1 1 0 1 0 1 0
0 0 1 1 0 1 1 1 …
Run Code Online (Sandbox Code Playgroud)

c++ arrays algorithm

9
推荐指数
2
解决办法
968
查看次数

对于通过包导入的类型以及直接从同一模块导入的类型,isinstance失败

/Project
|-- main.py
|--/lib
|  |--__init__.py
|  |--foo.py
|  |--Types.py
Run Code Online (Sandbox Code Playgroud)

/Project/lib已被添加到PYTHONPATH变量中.

Types.py:

class Custom(object):
    def __init__(self):
        a = 1
        b = 2
Run Code Online (Sandbox Code Playgroud)

foo.py:

from Types import Custom
def foo(o):
    assert isinstance(o, Custom)
Run Code Online (Sandbox Code Playgroud)

最后,来自main.py:

from lib.Types import Custom
from lib.foo import foo
a = Custom()
foo(a)
Run Code Online (Sandbox Code Playgroud)

现在的问题是,这a是类型lib.foo.Custom,而isinstance调用将检查它是否等于foo.Custom,显然返回false.

如何在不更改库(lib)中的任何内容的情况下避免此问题?

python python-3.x python-3.4

9
推荐指数
2
解决办法
2301
查看次数

获取生成UNIX信号的故障地址

我对一个信号处理程序感兴趣,它可以识别导致问题的指令的地址.

我知道siginfo_t并且__builtin_return_address似乎都没有工作:

#include <iostream>
#include <signal.h>

void handler (int, siginfo_t *, void *);

int main ()
{
begin:
    std :: cerr << &&begin << " ~ " << &&before << " ~ " << &&after << "\n";

    struct sigaction s;
    s .sa_flags = SA_SIGINFO;
    sigemptyset (& s .sa_mask);
    s .sa_sigaction = handler;
    sigaction (SIGSEGV, &s, NULL);

    int * i = NULL;
before:
    *i = 0;
after:
    std :: cout << "End.\n";
}

void handler (int, siginfo_t …
Run Code Online (Sandbox Code Playgroud)

c++ unix signals

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