1

我通过网络发送和接收不同的对象。在我的应用程序中,服务器可以接收泡菜或字符串。有没有办法知道我得到的数据是泡菜还是字符串?

我试过了:

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'>

所以它似乎对泡菜和字符串一视同仁。有任何想法吗?

4

2 回答 2

1
try:
    pickle.loads(key)
    print 'Pickled data'
except:
    print 'Not a pickled data'
于 2017-05-12T22:09:54.137 回答
0

pickle.dumps对于 python 3,由于is not a bytes 对象的结果不再是这种情况:

In [1]: import pickle                                                    

In [2]: test = 'mystring'                                                

In [3]: pickle.dumps(test)                                               
Out[3]: b'\x80\x03X\x08\x00\x00\x00mystringq\x00.'

In [4]: isinstance(_3,str)                                               
Out[4]: False
于 2018-11-30T12:11:57.010 回答