Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的配方搜索程序(守护进程)的图像缓存循环出错_Python_Linux_Ubuntu_Ubuntu Unity - Fatal编程技术网

Python 我的配方搜索程序(守护进程)的图像缓存循环出错

Python 我的配方搜索程序(守护进程)的图像缓存循环出错,python,linux,ubuntu,ubuntu-unity,Python,Linux,Ubuntu,Ubuntu Unity,我编写了一个守护程序,用于从Gourmet Recipe Manager的数据库(即GNU/Linux的配方管理器)中搜索配方 我的程序通过循环从sqlite数据库中读取每个配方元素所需的信息 (Ubuntu Linux的这种守护进程称为“作用域”。 这样的范围为ubuntu unity提供了更多的搜索源。) “model”拥有这些信息,这些信息通过DBUS传递给ubuntuunity 理论上,您可以使用URI作为“model”中图像的源, 但是开发人员在IRC中告诉我,我不能使用数据URI 我

我编写了一个守护程序,用于从Gourmet Recipe Manager的数据库(即GNU/Linux的配方管理器)中搜索配方

我的程序通过循环从sqlite数据库中读取每个配方元素所需的信息

(Ubuntu Linux的这种守护进程称为“作用域”。
这样的范围为ubuntu unity提供了更多的搜索源。)

“model”拥有这些信息,这些信息通过DBUS传递给ubuntuunity

理论上,您可以使用URI作为“model”中图像的源,
但是开发人员在IRC中告诉我,我不能使用数据URI

我也测试过了,但对我来说它不起作用

因此,我将(d)图像缓存在/tmp中

现在你可以看到所有的食谱,并搜索每个标题的具体食谱,但图像关联是完全错误的。如果搜索第2个,则会显示第2个的配方,但会在sqlite表中显示第一个配方的图像

下面是两张图片,以了解问题:

我已经在一些IRC房间里寻找帮助,但是没有人能帮助我

我认为你必须以某种方式保存每个图像的状态

如果您有一个不需要缓存图像的解决方案,我将非常高兴。

可以在此处查看完整的源文件:

下面是我代码的具体部分:

if row[14]:
        open('/tmp/unity-scope-gourmet/icon' + str(i), 'wb').write(row[14])
        model.append(uri, '/tmp/unity-scope-gourmet/icon' + str(i), 1, "text/html", title, comment, uri)
else:
        if os.path.exists('/tmp/unity-scope-gourmet/icon' + str(i)):    os.remove('/tmp/unity-scope-gourmet/icon' + str(i))
        model.append(uri, '', 1, "text/html", title, comment, uri)

听起来像是你在描述一个简单的计数器错误。我不清楚您是如何初始化计数器“i”的,但如果它关闭了一个,简单的解决方案是在使用它之前向它添加一个,即:

open('/tmp/unity-scope-gourmet/icon' + str(i+1), 'wb').write(row[14])
                                           ^^^

我通过将缓存图像的文件名与配方的每个ID结合起来解决了这个问题

代码:


请在此处查看完整的解决方案:

请仔细阅读我的问题。它只有在我搜索特定的东西时才会发生。当我搜索第5个或第6个配方时,它们会正确显示并显示正确的图像。当我什么也不搜索时,所有图像也会正确显示。查看您的解决方案第2个配方的图像错误,而所有其他配方甚至都没有图像。出于礼貌,我已再次阅读了您的邮件…但我找不到您正在谈论的参考资料。然而,我确实看到了这条评论,这正是我的回答试图帮助的“如果你搜索第2条,第2条的配方会显示出来,但会在sqlite表中显示第一条配方的图像。”。我很乐意提供帮助,但我无法清楚地理解您所描述的内容。您能理解您在这里的图像上看到的内容吗?好的。你看,当我什么都不搜索时,后台的守护程序会在数据库中显示我的所有配方,但当我搜索某个配方时,配方元素会得到错误的图像。我的英语不好。但是你看我写了很多。。。这很难理解吗?你是说问题出在sqlite上,还是你的渲染代码上?在您引用的代码片段中,您专门引用了呈现代码,因此我将重点放在这里。此外,您说它显示的是正确的配方,但图像不正确。此外,不正确的图像与预期图像具有某种顺序关系。我很想帮忙,但除非你能简单地解释这个问题,否则我想我对你不会有多大帮助。
i = row[0]