小编war*_*iuc的帖子

自定义小部件的占位符

我正在从*.ui文件加载QMainWIndow基础.此外,我有一个自定义小部件,我想放在窗体上的某个地方.目前我在.ui文件中放入一个空QVBoxLayout命名placeholder,并在QMainWindow子类中执行self.placeholder.addWidget(my_custom_widget)

在这种方法中我唯一不喜欢的是空布局没有自己的大小.我可以有一个布局一个细胞,并用虚拟控件(QLabel例如)与我想要的大小,更换这个小工具,然后添加我的自定义窗口小部件,但该方法似乎对我来说太多.

你完成这项任务的方法是什么?

我正在使用Python(PyQt4)

qt qt4 pyqt pyqt4 pyside

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

生成大的随机序列的唯一数字

我需要填写一个文件,其中包含许多由数字标识的记录(测试数据).记录的数量非常大,而且ID应该是唯一的,记录的顺序应该是随机的(或伪随机的).

我试过这个:

# coding: utf-8
import random

COUNT = 100000000

random.seed(0)
file_1 = open('file1', 'w')
for i in random.sample(xrange(COUNT), COUNT):
    file_1.write('ID{0},A{0}\n'.format(i))
file_1.close()
Run Code Online (Sandbox Code Playgroud)

但它正在吃掉我所有的记忆.

有没有办法生成一个连续的大洗牌序列(不一定但它会很好,否则是唯一的)整数?使用发生器而不是将所有序列保留在RAM中?

python random

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

Python 3中的相对导入问题

Python导入让我发疯(我在某些时候使用python导入的经验根本不符合'明确比隐含更好':():

[app]
    start.py
        from package1 import module1
    [package1]
        __init__.py
            print('Init package1')
        module1.py
            print('Init package1.module1')
            from . import module2
        module2.py
            print('Init package1.module2')
            import sys, pprint
            pprint.pprint(sys.modules)
            from . import module1
Run Code Online (Sandbox Code Playgroud)

我明白了:

vic@ubuntu:~/Desktop/app2$ python3 start.py 
Init package1
Init package1.module1
Init package1.module2
{'__main__': <module '__main__' from 'start.py'>,
 ...
 'package1': <module 'package1' from '/home/vic/Desktop/app2/package1/__init__.py'>,
 'package1.module1': <module 'package1.module1' from '/home/vic/Desktop/app2/package1/module1.py'>,
 'package1.module2': <module 'package1.module2' from '/home/vic/Desktop/app2/package1/module2.py'>,
 ...
Traceback (most recent call last):
  File "start.py", line 3, in <module>
    from package1 import module1
  File "/home/vic/Desktop/app2/package1/module1.py", line 3, …
Run Code Online (Sandbox Code Playgroud)

python importerror python-3.x

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

获取对当前异常的引用

$ ./runtests.py -v tests/managers/test_customer.py:CustomerManagerTest.test_register_without_subscription --ipdb

...

test_register_without_subscription (tests.managers.test_customer.CustomerManagerTest) ... 
- TRACEBACK --------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "*****/tests/managers/test_customer.py", line 198, in test_register_without_subscription
    1/0
ZeroDivisionError: integer division or modulo by zero
--------------------------------------------------------------------------------
> *****/tests/managers/test_customer.py(198)test_register_without_subscription()
    197     def test_register_without_subscription(self):
--> 198         1/0
    199         ...

ipdb> import sys
ipdb> sys.exc_info()
(<type 'exceptions.AttributeError'>, AttributeError("Pdb instance has no attribute 'do_sys'",), <traceback object at 0x47eb908>)
ipdb> 
Run Code Online (Sandbox Code Playgroud)

我找不到任何ipdb help显示当前异常的命令.

import sys; print sys.exc_info()不起作用.

目前我这样做:

try:
    do_something_that_raises_an_exception() …
Run Code Online (Sandbox Code Playgroud)

python debugging exception pdb ipdb

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

如何在scrapy中处理302重定向

报废网站时,我收到服务器的302响应:

2014-04-01 21:31:51+0200 [ahrefs-h] DEBUG: Redirecting (302) to <GET http://www.domain.com/Site_Abuse/DeadEnd.htm> from <GET http://domain.com/wps/showmodel.asp?Type=15&make=damc&a=664&b=51&c=0>
Run Code Online (Sandbox Code Playgroud)

我想向GET网址发送请求,而不是重定向.现在我找到了这个中间件:

https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py#L31

我将此重定向代码添加到我的middleware.py文件中,然后将其添加到settings.py中:

DOWNLOADER_MIDDLEWARES = {
 'street.middlewares.RandomUserAgentMiddleware': 400,
 'street.middlewares.RedirectMiddleware': 100,
 'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}
Run Code Online (Sandbox Code Playgroud)

但我仍然被重定向.这是我为了让这个中间件工作所必须做的吗?我错过了什么吗?

python scrapy http-status-code-302

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

测试中的错误与致命

我正在使用Go-Json-Rest开发JSON Web服务.我正在写测试.

...
recorded = test.RunRequest(t, &api.Handler,
    test.MakeSimpleRequest("POST", "http://localhost/api/products",
        product))
recorded.CodeIs(201)
recorded.ContentTypeIsJson()

var newProduct Product
err := recorded.DecodeJsonPayload(&newProduct)
if err != nil {
    t.Fatal(err)
}
...
Run Code Online (Sandbox Code Playgroud)

我正在使用,Fatal因为我来自Python世界,assert它将立即停止测试用例方法执行.这是有道理的:为什么尝试解码数据,如果它不是JSON?

但是recorded.CodeIs(201),recorded.ContentTypeIsJson()和我见过的其他测试一样Error,并没有停止测试执行.

我应该在测试中使用什么?Error还是Fatal

go

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

将sys.stdout重定向到python日志记录

所以现在我们有很多python脚本,我们正在尝试整合它们并修复和裁员.我们要做的一件事是确保所有sys.stdout/sys.stderr进入python日志记录模块.

现在最重要的是,我们希望打印出以下内容:

[<ERROR LEVEL>] | <TIME> | <WHERE> | <MSG>
Run Code Online (Sandbox Code Playgroud)

现在所有的python错误消息中的所有sys.stdout/sys.stderr消息的格式都是[LEVEL] - MSG,它们都是使用sys.stdout/sys.stderr编写的.我可以在我的sys.stdout包装器和sys.stderr包装器中解析这个问题.然后根据解析的输入调用相应的日志记录级别.

所以基本上我们有一个名为foo的包,以及一个名为log的子包.在__init__.py我们定义以下内容:

def initLogging(default_level = logging.INFO, stdout_wrapper = None, \
                stderr_wrapper = None):
    """
        Initialize the default logging sub system
    """
    root_logger = logging.getLogger('')
    strm_out = logging.StreamHandler(sys.__stdout__)
    strm_out.setFormatter(logging.Formatter(DEFAULT_LOG_TIME_FORMAT, \
                                            DEFAULT_LOG_TIME_FORMAT))
    root_logger.setLevel(default_level)
    root_logger.addHandler(strm_out)

    console_logger = logging.getLogger(LOGGER_CONSOLE)
    strm_out = logging.StreamHandler(sys.__stdout__)
    #strm_out.setFormatter(logging.Formatter(DEFAULT_LOG_MSG_FORMAT, \
    #                                        DEFAULT_LOG_TIME_FORMAT))
    console_logger.setLevel(logging.INFO)
    console_logger.addHandler(strm_out)

    if stdout_wrapper:
        sys.stdout = stdout_wrapper
    if stderr_wrapper:
        sys.stderr = stderr_wrapper


def cleanMsg(msg, is_stderr = False):
    logy = logging.getLogger('MSG')
    msg = msg.rstrip('\n').lstrip('\n')
    p_level …
Run Code Online (Sandbox Code Playgroud)

python logging

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

Python/Django中的Global Request变量是否可用?

我写了一个插件,发送一个信号来激活我的代码.但是,它不会将用户请求对象发送到我的代码.我正在寻找一种方法来检索当前请求而无需修改主应用程序.我找不到任何与全局请求相关的文档(比如$_SERVER['REMOTE_ADDR']在PHP中).

我想知道在Python/Django中是否有任何变量可以做.

python django

11
推荐指数
2
解决办法
9520
查看次数

不可能的开关盒

这个程序不编译:

package main

type Validator struct {
}

// Error implements error interface
func (v *Validator) Error() string {
    return ""
}

func test() error {
    return &Validator{}
}

func main() {
    switch test().(type) {
    case nil:
        println("No error")
    case Validator:
        println("Validation error")
        return
    default:
        println("Unknown error")
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是:

prog.go:19: impossible type switch case: test() (type error) cannot have dynamic type Validator (missing Error method)
Run Code Online (Sandbox Code Playgroud)

Validator结构有方法Error.

go

11
推荐指数
2
解决办法
5519
查看次数

描述符的命名约定

我有一个描述符

class ReferredItem(): 
    def __init__(self, method):
        self.method = method

    def __get__(self, obj, objtype):
        ...
Run Code Online (Sandbox Code Playgroud)

我用它作装饰:

class MyClass():

    @ReferredItem
    some_method(self):
        ...
Run Code Online (Sandbox Code Playgroud)

我见过装饰器是小写的.但是应该用驼峰的方式命名类.

我应该把这个名字命名为referred_item?或者保持现状?

python coding-style naming-conventions

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