相关疑难解决方法(0)

是否有内置函数来打印对象的所有当前属性和值?

所以我在这里寻找的是像PHP的print_r函数.这样我就可以通过查看相关对象的状态来调试我的脚本.

python debugging introspection pretty-print python-datamodel

876
推荐指数
18
解决办法
75万
查看次数

Python和JavaScript之间的JSON日期时间

我想使用JSON从Python发送序列化形式的datetime.datetime对象,并使用JSON在JavaScript中反序列化.做这个的最好方式是什么?

javascript python json

388
推荐指数
8
解决办法
17万
查看次数

将python dict转换为字符串并返回

我正在编写一个将数据存储在字典对象中的程序,但是这个数据需要在程序执行期间的某个时刻保存,并在程序再次运行时加载回字典对象.如何将字典对象转换为可以写入文件并加载回字典对象的字符串?这有望支持包含词典的词典.

python serialization dictionary

248
推荐指数
7
解决办法
47万
查看次数

将Django Model对象转换为dict,所有字段都保持不变

如何将django Model对象转换为包含其所有字段的dict ?理想情况下,所有内容都包含外键和带有editable = False的字段.

让我详细说明一下.假设我有一个类似以下的django模型:

from django.db import models

class OtherModel(models.Model): pass

class SomeModel(models.Model):
    normal_value = models.IntegerField()
    readonly_value = models.IntegerField(editable=False)
    auto_now_add = models.DateTimeField(auto_now_add=True)
    foreign_key = models.ForeignKey(OtherModel, related_name="ref1")
    many_to_many = models.ManyToManyField(OtherModel, related_name="ref2")
Run Code Online (Sandbox Code Playgroud)

在终端中,我做了以下事情:

other_model = OtherModel()
other_model.save()
instance = SomeModel()
instance.normal_value = 1
instance.readonly_value = 2
instance.foreign_key = other_model
instance.save()
instance.many_to_many.add(other_model)
instance.save()
Run Code Online (Sandbox Code Playgroud)

我想将其转换为以下字典:

{'auto_now_add': datetime.datetime(2015, 3, 16, 21, 34, 14, 926738, tzinfo=<UTC>),
 'foreign_key': 1,
 'id': 1,
 'many_to_many': [1],
 'normal_value': 1,
 'readonly_value': 2}
Run Code Online (Sandbox Code Playgroud)

回答不满意的问题:

Django:将一整套Model的对象转换为单个字典

如何将Django Model对象转换为字典并仍然拥有其外键?

python django dictionary django-models

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

使用常规编码器使对象JSON可序列化

JSON序列化自定义非可序列化对象的常规方法是子类化json.JSONEncoder,然后将自定义编码器传递给转储.

它通常看起来像这样:

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, foo):
            return obj.to_json()

        return json.JSONEncoder.default(self, obj)

print json.dumps(obj, cls = CustomEncoder)
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是使用默认编码器进行序列化.我环顾四周但找不到任何东西.我的想法是编码器会看到一些字段来确定json编码.类似的东西__str__.也许是一个__json__领域.在python中有这样的东西吗?

我想制作一个模块的类,我正在使用JSON序列化给使用该软件包的每个人,而不必担心实现他们自己的[普通]自定义编码器.

python serialization json monkeypatching

59
推荐指数
3
解决办法
6万
查看次数

Python:使eval安全

我想要一种简单的方法在Python中执行"计算器API".

现在,我并不关心计算器将支持的确切功能集.

我希望它接收一个字符串,"1+1"并在我们的例子中返回一个包含结果的字符串"2".

有没有办法让eval这种东西安全?

首先,我会这样做

env = {}
env["locals"]   = None
env["globals"]  = None
env["__name__"] = None
env["__file__"] = None
env["__builtins__"] = None

eval(users_str, env)
Run Code Online (Sandbox Code Playgroud)

这样调用者就不会搞乱我的局部变量(或看到它们).

但我相信我在这里监督很多.

eval安全问题是否可以解决,或者是否存在太多微小的细节以使其正常工作?

python eval

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

Python eval:如果我禁用内置和属性访问,它仍然很危险吗?

我们都知道这eval很危险,即使你隐藏了危险的函数,因为你可以使用Python的内省功能深入挖掘并重新提取它们.例如,即使您删除__builtins__,也可以使用它来检索它们

[c for c in ().__class__.__base__.__subclasses__()  
 if c.__name__ == 'catch_warnings'][0]()._module.__builtins__
Run Code Online (Sandbox Code Playgroud)

但是,我见过的每个例子都使用属性访问.如果我禁用所有内置函数禁用属性访问(通过使用Python令牌化程序对输入进行标记,并在具有属性访问令牌时拒绝它),该怎么办?

在你问之前,不,对于我的用例,我不需要其中任何一个,所以它不会太瘫痪.

我想要做的是让SymPy的同情功能更安全.目前,它对输入进行了标记,对其进行了一些转换,并在命名空间中对其进行了演绎.但它不安全,因为它允许属性访问(即使它真的不需要它).

python eval python-internals

35
推荐指数
5
解决办法
4898
查看次数

如何使用JSON.loads转换为Python datetime对象?

我有一个JSON对象的字符串表示形式.

dumped_dict = '{"debug": false, "created_at": "2020-08-09T11:24:20"}'
Run Code Online (Sandbox Code Playgroud)

当我用这个对象调用json.loads时;

json.loads(dumped_dict)
Run Code Online (Sandbox Code Playgroud)

我明白了

{'created_at': '2020-08-09T11:24:20', 'debug': False}
Run Code Online (Sandbox Code Playgroud)

这里没有错.但是,我想知道是否有办法将上面的对象与json.loads转换为如下所示:

{'created_at': datetime.datetime(2020, 08, 09, 11, 24, 20), 'debug': False}
Run Code Online (Sandbox Code Playgroud)

不久,我们能够在调用json.loads时将datetime字符串转换为实际的datetime.datetime对象吗?

python datetime json

31
推荐指数
4
解决办法
3万
查看次数

Peewee模型为JSON

我正在使用peewee作为ORM创建API,我需要能够将peewee模型对象转换为JSON对象以发送给用户.有谁知道这样做的好方法?

python json peewee

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

datetime.date(2014,4,25)在Django中不是JSON可序列化的

我跟着如何在python中克服"datetime.datetime而不是JSON serializable"?但这没有帮助

我试过这段代码

>>> import datetime
>>> a =datetime.date(2014, 4, 25)
>>> from bson import json_util
>>> b = json.dumps(a,default = json_util.default)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 250, in dumps
    sort_keys=sort_keys, **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/home/.../python2.7/site-packages/bson/json_util.py", line 256, in default
    raise TypeError("%r is not JSON serializable" % obj)
TypeError: datetime.date(2014, 4, 25) …
Run Code Online (Sandbox Code Playgroud)

python django serialization datetime json

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