使用TypeError

时间:2017-08-24 05:33:57

标签: python-3.x

我想从python2迁移到python3。 在代码中,它会以二进制模式打开文件。

f = open('test', 'rb+')

因为,它需要这样的文件搜索。

f.seek(-26, 1)

并且,代码将格式化的字符串写入文件。

f.writelines("%20s,%04d\n" % (varStr, varInt))
f.writelines('{0:>20s},{1:04d}\n'.format(varStr, varInt))

上面的代码是原始代码,下面的代码由我编辑。 但是,当我运行代码时,会出现错误。

  

TypeError:需要像object这样的字节,而不是' int'

请帮助我摆脱这个地狱。

1 个答案:

答案 0 :(得分:0)

有两个错误:

  1. 在二进制模式下打开文件时需要对字符串进行编码(以字节为单位更改)
  2. writelines必须与列表而不是单个项一起使用(函数末尾有's')。在您的情况下,您可以使用'write'
  3. 也许这样的事情会起作用:

    f.write(("%20s,%04d\n" % (varStr, varInt)).encode())
    f.write(('{0:>20s},{1:04d}\n'.format(varStr, varInt)).encode())