我有一个非常简单的问题。这个空闲的示例代码最好地解释了这一点:
from pyDes import *
>>> ciphertext = triple_des('a 16 or 24 byte password').encrypt("secret message", padmode=2)
>>> ciphertext
')\xd8\xbfFn#EY\xcbiH\xfa\x18\xb4\xf7\xa2'
>>> print ciphertext
)Ø¿Fn#EYËiHú´÷¢
如果有人可以解释为什么会发生这种情况以及如何在将此代码写入txt文件(不更改解密输出)时阻止它发生,我将不胜感激,因为write()
函数具有相同的效果文本。顺便说一句,我在vista上使用python 2.7。
答案 0 :(得分:0)
当你在Python shell中并以这种方式打印一些变量时:
>>> print var
您得到的是对象__str__
的{{1}}方法的输出。
相反,当你以另一种方式“打印”变量时:
var
您得到的是对象>>>> var
的{{1}}方法的输出。
这两种方法的区别在于__repr__
函数的返回值应该是有效的python表达式。理想情况下,您应该能够通过简单地复制/粘贴其var
方法的输出来获得与__repr__
相同的新对象(在每种情况下都不可能这样做)。但是,var
方法的输出仅用于调试目的。
相反,__repr__
方法旨在为您返回一个人类可读且简洁的对象表示。
在你的情况下,你写__repr__
时得到的是“正式”表示,它以十六进制表示形式翻译任何不可打印的字符。相反,当您使用__str__
语句时,您将获得包含不可打印字符的“原始”数据。