' INT'对象没有属性' __ getitem __'

时间:2016-03-19 17:31:37

标签: python

f = open("key.txt", 'rb')
k= f.read()
def bits(f):
    bytes = (ord(k) for k in f.read())
    for k in bytes:
        for i in xrange(8):
            yield (k >> i) & 1
for k in bits(open('key.txt', 'r')):
    print k

kt= [k[57],k[2],k[4],k[43]]

print kt

我收到错误消息

Traceback (most recent call last):
  File "k.py", line 11, in <module>
    kt= [k[57],k[2],k[4],k[43]]
TypeError: 'int' object has no attribute '__getitem__'

我如何纠正它?

3 个答案:

答案 0 :(得分:0)

由于scoring::plus_minus_one matchScoring; std::function<int_fast16_t(int,int)> score_function = matchScoring; nw_score_matrix(x.begin(), x.end(), y.begin(), y.end(), std::move(score_function)); 会产生一个在行bits()上分配给k的整数,因此for k in bits(open('key.txt', 'r')):行上的索引运算符自然会失败,因为kt= [k[57],k[2],k[4],k[43]]没有&#39} ; t已定义int

答案 1 :(得分:0)

您需要为ProxyPass /images ! ProxyPass / ajp://domain.tld:8010/ nocanon 提供一个名称:

bits(...)

您的工作没有成功,因为x = list(bits(open('key.txt', 'r'))) for k in x: print k kt = [x[57], x[2], x[4], x[43]] 中的每个项目都分配了kbits(...)循环完成后,它仍将等于最后一项。相反,你需要给整个事物命名。

答案 2 :(得分:0)

一开始你正在做,

k = f.read()

以后当你想要做的时候,

kt= [k[57],k[2],k[4],k[43]]

您基本上使用的是第一个k,因为这是此范围内唯一可见的k。因此,您收到了错误。

你可能想要删除循环并执行类似的操作。

k = list(bits(open('file.txt', 'r')))    
kt = [k[57], k[2], k[4], k[43]]    
print kt