【发布时间】:2017-10-12 07:36:42
【问题描述】:
我通过网络发送和接收不同的对象。在我的应用程序中,服务器可以接收泡菜或字符串。有什么方法可以知道我得到的数据是泡菜还是字符串?
我试过了:
class C:
pass
if __name__ == "__main__":
c = C()
data = pickle.dumps(c)
key = 'cryptokey'
print isinstance(data, basestring)
print isinstance(key, basestring)
print type(data)
print type(key)
但输出没有帮助,它显示:
True
True
<type 'str'>
<type 'str'>
所以它似乎对泡菜和字符串一视同仁。有任何想法吗?
【问题讨论】:
-
泡菜是一串二进制数据作为字符串。
-
更改数据格式以减少歧义。
-
Pickle 以特定的协议和版本标签开头。但更明智 - 注释您的数据,以便接收者知道他们得到的是泡菜、字符串还是黄瓜。
-
@pvg:只有协议 2 及更高版本有该标签。
-
@pvg:仅在 Python 3 上,这不是问题中示例代码使用的版本。
标签: python string types pickle isinstance