小编Aya*_*Aya的帖子

是否有相当于C++中的"for ... else"Python循环?

Python有一个有趣的for语句,允许您指定一个else子句.

在像这样的结构中:

for i in foo:
  if bar(i):
    break
else:
  baz()
Run Code Online (Sandbox Code Playgroud)

else子句在之后执行for,但仅在for正常终止时(不是由a break)终止.

我想知道C++中是否有相同的东西?我可以用for ... else吗?

c++ python loops for-loop break

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

如何在用作外键时更改Django Admin中的用户表示?

我有几个模型有User as Foreign Key.用户列表显示用户名,但我想自定义它.我是否必须使用自定义模型扩展用户模型并编写自己的__str__函数?有没有更简单的方法?我不认为你可以使用callable for fieldset,对吗?

python django django-admin

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

Loaddata没有正确处理时间戳和时区

我正在使用启用了mysql和timezones的django 1.4.1.我向yaml做了一个转储数据,修改了一些字段以创建一些测试数据,并且我试图将其加载回来.但是,即使指定了tz,Django仍然抱怨天真的日期时间

具体来说,我的loaddata有:

fields: {created_date: !!timestamp '2012-09-15 22:17:44+00:00', ...
Run Code Online (Sandbox Code Playgroud)

但loaddata给出错误:

RuntimeWarning: DateTimeField received a naive datetime (2012-09-15 22:17:44) while time zone support is active.
Run Code Online (Sandbox Code Playgroud)

这对我来说没有多大意义,因为它看起来像:

  1. UTC时间戳
  2. Django使用dumpdata导出的格式相同

有什么方法可以告诉django这是一个UTC日期吗?

python django yaml

6
推荐指数
2
解决办法
1774
查看次数

当主脚本在子模块中时,正确初始化sys.path

sys.path根据文档,第一个条目是当前脚本的目录.在以下设置中,我想更改此默认值.想象一下以下目录结构:

src/
    core/
        stuff/
        tools/
            tool1.py
            tool2.py
    gui/
        morestuff/
        gui.py
Run Code Online (Sandbox Code Playgroud)

脚本tool*.pygui.py旨在为运行脚本,如下所示:

python src/core/tools/tool2.py
python src/gui/gui.py
Run Code Online (Sandbox Code Playgroud)

现在所有工具都从中导入src.core.stuff,并且需要GUI gui.morestuff.这意味着sys.path[0]应该指向src/,但它指向src/core/tools/src/gui/默认.

我可以调整sys.path[0]每个脚本(使用类似下面的结构,例如,在开头gui.py):

if __name__ == '__main__':
    if sys.path[0]: sys.path[0] = os.path.dirname(os.path.abspath(sys.path[0]))
Run Code Online (Sandbox Code Playgroud)

但是,这有点多余,对于拥有数千个脚本的成熟代码库来说,这将变得乏味.我也知道-m开关:

python -m gui.gui
Run Code Online (Sandbox Code Playgroud)

但这需要当前目录src/.

有没有更好的方法来实现所需的结果,例如通过修改__init__.py文件?

编辑:这是为Python 2.7:

~$ python -V
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)

python module path python-import

5
推荐指数
2
解决办法
2240
查看次数

将存储在数据库中的BLOB转换为HTML网站上的图像

这是我的第一个问题.

我让用户将自己的图像上传到数据库.该图像存储为BLOB.

我成功地做到了这一点.我正在使用MySQL作为数据库.

我遇到问题的部分是在调用时将BLOB显示为网站上的图像.

现在只显示二进制数据,显示许多奇怪的符号.我认为这是HTTP标题的问题.现在它在:

print "Content-Type: text/html"
Run Code Online (Sandbox Code Playgroud)

我试过了:

print "Content-Type: image/jpeg"
Run Code Online (Sandbox Code Playgroud)

我使用Python连接数据库并编写HTML.

编辑:代码:

def showFile():

    # do SQL to retrieve blob where filename
    conn, cursor = getConnectionAndCursor()
    sql = """
    select data
    from upload 
    where id=1
    """
    cursor.execute(sql)
    data = cursor.fetchone()
    blob = data[0]

    print "<hr>"
    print "This is what I'm trying"
    print """<img  src="data:image/jpeg;base64,%s/>""" % data

######################################################################
if __name__ == "__main__":

    form = cgi.FieldStorage()

    if "show_file" in form:
        print "Content-Type: text/html"
        print 
        printHeaders("Image upload example")
        showFile()
        printFooter()
Run Code Online (Sandbox Code Playgroud)

html python database blob image

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

C++ Python导入类; 呼叫方法

我使用的是Python 2.7.我不清楚如何在C++中嵌入Python,如下所示:http://docs.python.org/2.7/extending/embedding.html.

我在一个名为test.py的文件中有一个简单的python示例:

class math:
    #def __init__(self):
    def add(self, num1, num2):
        return num1 + num2

    def subtract(self, num1, num2):
        return num1 - num2
Run Code Online (Sandbox Code Playgroud)

从python,我会做这样的事情:

>>> from test import math
>>> m = math()
>>> a = m.add(1, 2)
>>> s = m.subtract(1, 2)
Run Code Online (Sandbox Code Playgroud)

我有一些C++代码的开头来做到这一点:

PyObject *pName, *pModule;
Py_Initialize();
pName = PyString_FromString("test");
pModule = PyImport_Import(pName);
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好.但是,这似乎相当于在Python中执行此操作:

import test
Run Code Online (Sandbox Code Playgroud)

如何导入Python类数学?

谢谢

c++ python python-c-api

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

如何使用单个变量而不是在Python中传递多个Arguments

比方说,如果我有一个接受多个输入的方法,如下所示:

def SumOf(Arg1,Arg2,Arg3):
    Sum = Arg1+Arg2+Arg3
    return sum
Run Code Online (Sandbox Code Playgroud)

我在列表中有Arg1,Arg2,Arg3的值,我想访问该方法

Arguments = Arg1 + "," +  Arg2 + "," + Arg 3
Run Code Online (Sandbox Code Playgroud)

我想使用变量Arguments来调用方法SumOf

SumOf(Arguments)

但是我收到以下错误:

SumOf() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

注意:以上只是一个示例,我需要根据方法名称和参数执行不同的方法.

请帮忙.

python

4
推荐指数
2
解决办法
3461
查看次数

反斜杠本身('\')在Python中意味着什么?

我在nltk文档中找到了这段代码(http://www.nltk.org/_modules/nltk/sentiment/vader.html)

if (i < len(words_and_emoticons) - 1 and item.lower() == "kind" and \
            words_and_emoticons[i+1].lower() == "of") or \
            item.lower() in BOOSTER_DICT:
            sentiments.append(valence)
            continue
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个if条件意味着什么吗?

python

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