小编yar*_*elk的帖子

如何检查python模块是否存在而不导入它

我需要知道是否存在python模块,而不导入它.

导入可能不存在的东西(不是我想要的东西):

try:
    import eggs
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

python python-import

152
推荐指数
8
解决办法
14万
查看次数

如何从类定义传递参数到元类?

我试图在python 2.7中动态生成类,我想知道你是否可以轻松地从类对象传递参数到元类.

我读过这篇文章很棒,但并没有完全回答这个问题.目前我正在做的事情:

def class_factory(args, to, meta_class):
    Class MyMetaClass(type):
        def __new__(cls, class_name, parents, attrs):
            attrs['args'] = args
            attrs['to'] = to
            attrs['eggs'] = meta_class

    class MyClass(object):
        metaclass = MyMetaClass
        ...
Run Code Online (Sandbox Code Playgroud)

但这要求我做以下事情

MyClassClass = class_factory('spam', 'and', 'eggs')
my_instance = MyClassClass()
Run Code Online (Sandbox Code Playgroud)

这样做有更干净的方法吗?

python metaprogramming metaclass python-2.x

18
推荐指数
2
解决办法
9178
查看次数

子类芹菜任务

我正在编写很多非常相似的任务,并想知道如何更好地子类化Task以减少样板.因为一个任务只是一次实例化,所以你不能__init__像我下面所说的那样把事情放进去,但它应该说明一点.

我想要完成的事情:

class EmailTaskOne(Task):
    def run(self, object_id):
        email_data = EmailData.objects.get(pk=object_id)
        data = self.do_common_stuff(email_data)
        self.do_unique_stuff(data)

class EmailTaskTwo(Task):
    def run(self, object_id):
        email_data = EmailData.objects.get(pk=object_id)
        data = self.do_common_stuff(email_data)
        self.do_unique_stuff2(data)

# lots more tasks like this
Run Code Online (Sandbox Code Playgroud)

我想拥有的是:

class BaseEmailTask(Task):
     abstract = True
     #...Insert Magic Here...

class EmailTaskOne(BaseEmailTask):
     def run(self, object_id):
         self.do_unique_stuff(self.data)
Run Code Online (Sandbox Code Playgroud)

所以,既然__init__是正确的,我在哪里设置抽象类中的类.我可以很容易地定义一堆函数,如果我想做的就是分解一些东西,但是一些(很多)样板取决于object_id.

python django celery django-celery

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

获取Python中按键的键盘代码

我正在尝试获取在python中按下的字符的键盘代码。为此,我需要查看是否按了键盘数字。

这不是我要找的东西

import tty, sys

tty.setcbreak(sys.stdin)

def main():
    tty.setcbreak(sys.stdin)
    while True:
        c = ord(sys.stdin.read(1))
        if c == ord('q'):
            break
    if c:
        print c
Run Code Online (Sandbox Code Playgroud)

输出字符的ASCII码。这意味着,我对键盘1的命令与普通键盘1的命令相同。我还尝试了使用curses库和进行类似的设置raw,并获得了相同的结果。

我正在尝试获取原始键盘代码。如何做到这一点?

python

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

Wand将pdf转换为jpeg并将页面存储在类文件对象中

我正在尝试使用wand将pdf转换为jpegs,但是当我在image.sequence中迭代SingleImages并分别保存每个图像时.我使用Django在AWS上保存每个图像,使用数据库引用.

image_pdf = Image(blob=pdf_blob)
image_jpeg = image_pdf.convert('jpeg')
for img in image_jpeg.sequence:
    memory_file = SimpleUploadedFile(
        "{}.jpeg".format(img.page_number),
        page.container.make_blob())
    spam = Spam.objects.create(
        page_image=memory_file,
        caption="Spam")
Run Code Online (Sandbox Code Playgroud)

这不起作用,page.container正在调用父Image类,并且第一页被反复写入.如何获取第二帧/页面进行保存?

python pdf django imagemagick wand

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

Django 1.4 formwizard TestCases

我正在尝试为表单向导视图编写测试django.contrib.formstools.wizard.views.CookieWizardView,我不知道如何在测试用例中编写顺序帖子:

#test_views.py
def test_wizard_pass(self):
    response = self.c.post('/wizard/url/',first_form_post_dict)
    self.assertContains(...)
    response = self.c.post('/wizard/url/',second_step_post_dict)
    self.assertRedirect(...)
Run Code Online (Sandbox Code Playgroud)

我假设我需要根据第一个响应中的内容或者与用于会话管理的cookie有关的内容来更改第二个帖子数据,我只是不确定是什么.

django django-forms django-views django-testing django-formwizard

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

Kivy模板与动态网格布局

我正在尝试为布局创建一个模板,如下所示:

|----------|
|          | 
| IMAGE    |   <--- Just an image (square)
|          |
|----------| 
|[btn][btn]|   <--- GridLayout cols=2 of buttons 
|[btn][btn]| 
|[btn][btn]| 
|[btn][btn]| 
|[btn][btn]| 
|[btn][btn]|
|----------|
Run Code Online (Sandbox Code Playgroud)

第一部分很容易(但我可能是错的,因为我在kivy很新)

#:kivy 1.6
[SideBar@BoxLayout]:
    orientation: 'vertical'
    Image:
        source: ctx.image
        size_hint: (1, None)
        height: root.width
    GridLayout:
        cols: 2
        # What do I do here to make it easy to load a list of buttons?
Run Code Online (Sandbox Code Playgroud)

python layout widget kivy

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