小编war*_*iuc的帖子

无法在Scrapy中定义自定义下载中间件

我试图在Scrapy中设置一个自定义下载中间件类.我怀疑我错过了一些明显的东西,但我已经阅读了几次文档而没有找到解决方案.我对这应该是一项非常简单的任务感到有些沮丧,所以希望有人能够为我提供一些见解.

我已将以下行添加到我的settings.py文件中.

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }
Run Code Online (Sandbox Code Playgroud)

添加该行并运行项目后,我收到有关模块中间件不存在的错误.经过一些研究,我发现你需要__init__.pymiddlewares文件夹中添加一个文件供Python识别.我这样做了,现在收到以下错误:

NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader'
Run Code Online (Sandbox Code Playgroud)

没有编译TestDownloader.py文件,而项目中的所有其他*.py文件都是.如果我理解我的Python阅读正确,这意味着它没有被导入任何地方,但我找不到任何额外的Scrapy设置来改变以使其工作.

python scrapy

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

CMAKE_INSTALL_PREFIX环境变量 - 不起作用?

一些信息来源说:

您可以通过设置CMAKE_INSTALL_PREFIX环境变量来更改安装目录(前缀)

如果我在一个文件中:

export CMAKE_INSTALL_PREFIX=$KDEDIR
Run Code Online (Sandbox Code Playgroud)

然后获取它,并检查CMAKE_INSTALL_PREFIX环境变量是否设置,当我这样做:

vic@wic:~/kde/build/kde-workspace$ cmake ../../src/kde-workspace/
Run Code Online (Sandbox Code Playgroud)

然后:

vic@wic:~/kde/build/kde-workspace$ make install
Run Code Online (Sandbox Code Playgroud)

它试图将文件安装到系统目录.

如果我指定CMAKE_INSTALL_PREFIX为cmake的参数:

vic@wic:~/kde/build/kde-workspace$ cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR ../../src/kde-workspace/
Run Code Online (Sandbox Code Playgroud)

然后make install工作正常 - 安装文件到$KDEDIR

文档是否有可能设置具有相同名称的环境变量,或者我做错了什么?

c++ cmake

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

用另一个词典的一部分更新一个词典

我经常发现自己使用这个结构:

dict1['key1'] = dict2['key1']
dict1['key2'] = dict2['key2']
dict1['key3'] = dict2['key3']
Run Code Online (Sandbox Code Playgroud)

dict1用子集更新的类型dict2.

我认为没有一种构建方法可以在表单中执行相同的操作

dict1.update_partial(dict2, ('key1', 'key2', 'key3'))
Run Code Online (Sandbox Code Playgroud)

你通常采取什么方法?你有没有让自己的功能?看起来怎么样?

评论?


我已经提交了主意 Python的思路:

有时你想要一个dict,它是另一个dict的子集.如果dict.items接受了一个可选的键列表,那就太好了.如果没有给出密钥 - 使用默认行为 - 获取所有项目.

class NewDict(dict):

    def items(self, keys=()):
        """Another version of dict.items() which accepts specific keys to use."""
        for key in keys or self.keys():
            yield key, self[key]


a = NewDict({
    1: 'one',
    2: 'two',
    3: 'three',
    4: 'four',
    5: 'five'
})

print(dict(a.items()))
print(dict(a.items((1, 3, 5))))

vic@ubuntu:~/Desktop$ python test.py 
{1: 'one', 2: 'two', 3: 'three', …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
2
解决办法
1490
查看次数

描述符:通过__getattribute()__对属性访问的优先级

我无法理解以下优先级在__getattribute__()特殊方法和特定方法的上下文中意味着什么Descriptors

我下读这topic("Precedence") - under topic ("Desriptors")从本书的核心Python编程 3次,仍不能获得通过它..任何一个可以解释一下这些优先级,在那里它们被用于??

  • 类属性
  • 数据描述符
  • 实例属性
  • 非数据描述符
  • 默认为 __getattr__()

我还阅读了python文档,在那里我找到了以下声明: -

对于实例绑定,描述符调用的优先级取决于定义的描述符方法.描述符可以定义的任何组合__get__(),__set__()__delete__().如果它没有定义__get__(),那么访问该属性将返回描述符对象本身,除非对象的实例字典中有值.如果描述符定义__set__()和/或 __delete__(),则它是数据描述符; 如果它既不定义,则它是非数据描述符.通常情况下,数据描述符同时定义__get__()__set__(),非数据描述符刚才的__get__() 方法.

带有**__set__()****__get__()**定义的数据描述符总是覆盖实例字典中的重定义.相反,非数据描述符可以被实例覆盖.

Python方法(包括staticmethod()classmethod())实现为非数据描述符.因此,实例可以重新定义和覆盖方法.这允许单个实例获取与同一类的其他实例不同的行为.

任何人都可以举一个小例子来解释first paragraph它的全部意义吗?这又是什么意思 - override a redefinition in an instance dictionary??

python python-2.7

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

暂时禁用所有当前活动的jQuery事件处理程序

TD在双击时可以编辑表格的元素:

$(document).on("dblclick", "#table>tbody>tr>td.cell", function(e) {
    if (e.which != 1 || e.shiftKey || e.altKey || e.ctrlKey)
        // need left button without keyboard modifiers
        return;
    reset_selection();
    var editor = document.createElement("div");
    editor.setAttribute("contenteditable", "true");
    editor.innerHTML = this.innerHTML;
    this.innerHTML = '';
    // this.style.padding = 0;
    this.appendChild(editor);
    $(document).on("*", stub);
    editor.onblur = function() {
        // this.parentNode.setAttribute("style", "");
        this.parentNode.innerHTML = this.innerHTML;
        sys.editor = null;
        $(document).off("*", stub);;
    };
    editor.focus();
});

function stub(e) {
    e.stopImmediatePropagation();
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但是当我双击可编辑div内的文本时,双击事件会传播到父td,从而导致意外后果.还有其他我想要阻止的事件(select,mousedown等等),所以为每个事件编写一个存根对我来说并不好看.

在此输入图像描述

有没有办法禁用所有当前活动的jQuery事件处理程序并在之后启用它们?或者有些人会停止将所有事件从可编辑div传播到其父级?

javascript jquery javascript-events

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

获得Android App的"root"权限

我想知道如何从Android应用程序获得root权限?Android市场上有没有应用程序?

我尝试了下面的代码行列出文件但没有发生任何事情

Process process = Runtime.getRuntime().exec(new String[] { "su", "-", "root"});
Run Code Online (Sandbox Code Playgroud)

我试图在我的清单文件中给出TEST_FACTORY权限,但我收到错误"允许系统应用程序"

如何制作我的应用系统应用?

我想要帮助开始使用这些东西(如果可能的话,让应用程序获得root权限)对此非常感谢.提前致谢 :)

android root android-kernel

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

如何覆盖android 4.0中的主页按钮

我想在我的android活动中覆盖主页按钮.我已经尝试了一些与此相关的东西,它们适用于2.3及以下但不适用于4.0以上

@Override public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode == KeyEvent.KEYCODE_HOME)
    {
        startActivity(new Intent(this, ActivityB.class));
        return true;
    }
    return super.onKeyDown(keyCode, event); }
Run Code Online (Sandbox Code Playgroud)

和其他方式

 @Override public void onAttachedToWindow() { 
     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
     super.onAttachedToWindow(); 
 }
Run Code Online (Sandbox Code Playgroud)

但它没有帮助我.有任何想法请分享信息

android overriding android-4.0-ice-cream-sandwich android-homebutton

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

使用jetbrains设置golang环境

我使用idea(13.1社区版)设置了golang开发环境.SDK似乎得到了认可.但是,我无法通过右键单击源文件夹下的"新建"来创建GO文件.("go"项目为灰色)目前我必须手动将文件扩展名设置为".go"并编辑文件,但自动完成功能正常.这只存在于我的Mac上(版本10.9.4)我已将GOPATH目录访问模式设置为777,但仍无效.这在windows7上工作正常.所以我该怎么做 ?在此输入图像描述

这就是它在windows中的样子 在此输入图像描述

Thanks VonC, I already tried the /Users/Tom/go setting, this doesn't work and I switch to this root path.
here's my previous setting

 macbook:home root# go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/mac/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

这就是/ Users/Tom/Go中的样子在此输入图像描述

但是,感谢VonC,这不起作用.我不确定是什么原因.这是使用GOCODE的环境设置 在此输入图像描述 这是几个步骤! 步骤1

第2步

第三步:

第4步

STEP5

这是环境保护

顺便说一句,我注意到在这一步创建一个新的Go项目时,mac和windows有所不同,windows平台将显示"project sdk",而mac则不会. mac和windows并不完全在这一步

intellij-idea go

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

生成一致的人员数据

我想用Faker来生成一些测试数据。

但是我无法为单个用户生成一致的数据:

>>> from faker import Factory

>>> fake = Factory.create()

>>> fake.name()
>>> u'Tayshaun Corkery'

>>> fake.email()
>>> u'kaitlynn40@yahoo.com'
Run Code Online (Sandbox Code Playgroud)

如您所见,电子邮件并未反映之前生成的名称。文档说:

每次调用方法都会fake.name()产生不同的(随机)结果。这是因为 faker 将faker.Generator.method_name()调用转发到faker.Generator.format(method_name)

有没有办法在不编写大量额外代码的情况下生成一致的个人数据?

python

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

逐步创建异步任务并等待所有任务完成

我正在尝试创建一个程序,以便与我创建的服务器建立大量的Web套接字连接:

class WebSocketClient():

    @asyncio.coroutine
    def run(self):
        print(self.client_id, 'Connecting')
        ws = yield from aiohttp.ws_connect(self.url)
        print(self.client_id, 'Connected')
        print(self.client_id, 'Sending the message')
        ws.send_str(self.make_new_message())

        while not ws.closed:
            msg = yield from ws.receive()

            if msg.tp == aiohttp.MsgType.text:
                print(self.client_id, 'Received the echo')
                yield from ws.close()
                break

        print(self.client_id, 'Closed')


@asyncio.coroutine
def make_clients():

    for client_id in range(args.clients):
        yield from WebSocketClient(client_id, WS_CHANNEL_URL.format(client_id=client_id)).run()


event_loop.run_until_complete(make_clients())
Run Code Online (Sandbox Code Playgroud)

问题是所有客户一个接一个地完成工作:

0 Connecting
0 Connected
0 Sending the message
0 Received the echo
0 Closed
1 Connecting
1 Connected
1 Sending the message
1 Received the …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio aiohttp

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