我刚开始学习Python 2.X.我正在尝试使用Python加密文件。专业用户都在使用pycrpto,而我只是在做一个简单的项目来探索“rb”中python的打开文件中的一些基础知识。这是代码:
def BinXor(tBIN, kBIN):
tLength = len(tBIN)
kLength = len(kBIN)
if tLength > kLength:
while True:
kBIN = kBIN + kBIN
if not len(kBIN) < tLength:
break
kBINXOR = kBIN[:tLength]
return "".join(["%x" % (int(x, 2) ^ int(y, 2)) for (x, y) in
zip(tBIN,kBINXOR)])
def question():
t = open("b.xlsx",'rb').read()
k = '00101101'
print BinXor(t,k)
错误消息是:
File "....py", line 27, in BinXor
return "".join(["%x" % (int(x, 2) ^ int(y, 2)) for (x, y) in zip(tBIN,kBINXOR)])
ValueError: invalid literal for int() with base 2: 'P'
如果从打开的文件语句中删除“b”,则错误相同。我在这里一直在阅读几个相关的问题,但仍然无法得到线索。有人能帮我一下吗?为什么我的代码不起作用?在“rb”模式下打开文件的结果究竟是什么内容?
答案 0 :(得分:1)
您的错误与open
无关。错误消息明确说明问题是使用int
作为参数调用'P'
函数。由于'P'
不代表二进制数,int
失败。