小编Ber*_*ard的帖子

如何检查复杂对象的哪些细节不能被腌制

概观

我想序列化我的复杂对象.它看起来很简单,但每一步都会产生不同的问题.

最后,其他程序员还必须能够创建从父对象继承的复杂对象.对于Python 2.7和Python3.x,这个对象应该是pickleable.

我从一个简单的对象开始,并使用pickle.dumppickle.load成功.

然后我创建了多个复杂的对象(类似但不完全相同),其中一些可以被转储,而有些则不能.

调试

pickle库知道哪些对象可以被腌制.理论上,这种方法pdb可以定制,以启用泡菜调试.

替代序列化库

我想要一个独立于对象内容的可靠序列化.所以我搜索了其他序列化工具:

  • 自我测试失败并且似乎过时的Cerealizer.
  • MessagePack不适用于Python 3.
  • 我试过JSON并得到了错误: builtins.TypeError: <lib.scan.Content object at 0x7f37f1e5da50> is not JSON serializable
  • 我看着Marshal和Shelve,但都参考了Pickle.

深入研究使用泡菜

我已经阅读了如何检查一个物体是否可以拾取而没有给我一个答案.

我找到的最接近的是如何在大量物体上找到Python Pickle中的错误来源

我把它调整为:

import pickle

if _future_.isPython3():        
    class MyPickler(pickle._Pickler):        
        def save(self, obj):             
            try:
                pickle._Pickler.save(self, obj)
            except:
                print ('pick(3.x) {0} of type {1}'.format(obj, type(obj)))                  
else:
    class MyPickler (pickle.Pickler):

        def save(self, obj):         
            try:
                pickle.Pickler.save(self, obj)
            except:
                print('pick(2.x)', obj, 'of type', type(obj)) …
Run Code Online (Sandbox Code Playgroud)

python debugging pickle python-2.7 python-3.x

19
推荐指数
1
解决办法
1888
查看次数

找不到Python烧瓶jinja图像文件

新手问题.

我正在使用Flask,一个用于Python的webframe.Flask使用Jinja渲染模板.我不知道哪个版本的Jinja Flask使用,也不知道如何检索Jinja版本或Flask版本.我使用Python 2.7版.

该模板包含css/image目录中的图像.在Firefox浏览器中直接将模板作为文件查看时,此图像可见.

但不是在执行Flask时:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('Basic.html', name=name)

if __name__ == '__main__':
   app.debug = True
   app.run()
Run Code Online (Sandbox Code Playgroud)

HTML文件的内容:

 <!DOCTYPE HTML>
 <html>
    <body> 

      <!-- variable example begin -->
      {% if name %}
        <h1>Hello {{ name }}!</h1>
      {% else %}
        <h1>Hello World!</h1>
      {% endif %}

      <!-- variable example end -->

     <img src="css/images/icons/resultset_previous.png" width="16" height="16" alt="previous" title="Previous" border="0">

   </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

模板运行正常,变量示例按预期运行.但是不显示图像.调试返回:"GET /hello/css/images/icons/resultset_previous.png HTTP/1.1"404 -

我按照文档中的建议在VirtualEnv中运行Flask.图像的路径似乎未知.我该如何设置路径?

python jinja2 flask

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

标签 统计

python ×2

debugging ×1

flask ×1

jinja2 ×1

pickle ×1

python-2.7 ×1

python-3.x ×1