在“rb”模式下打开文件到底意味着什么?

时间:2017-06-07 17:43:26

标签: python encryption

我刚开始学习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”模式下打开文件的结果究竟是什么内容?

1 个答案:

答案 0 :(得分:1)

您的错误与open无关。错误消息明确说明问题是使用int作为参数调用'P'函数。由于'P'不代表二进制数,int失败。