TypeError:'str'不支持缓冲接口& configparser

时间:2014-12-24 15:49:28

标签: python python-3.x

我是新手,我不想问我的第一篇文章这么简单的问题,但即使我是PHP / C程序员,我对Python也一无所知。

我在Figway工具中有一个python脚本,名为RegisterDevice.py,用于将我自己的传感器硬件注册到FIWARE Lab。但是由于Python3.4,该脚本的某些代码行无法正常工作。这可能不是我的问题,但我没有太多时间等待官方解决方案,这就是为什么我认为我可以解决它作为一个熟悉编程的人。

我在网上搜索了解决方案,但我找不到任何确切的解决方案。至于我读取字节和unicode字符串是Python3.x中的两种不同类型,但我无法实现在哪里编码或者可能在代码上将字符串解码为其他类型。也许我必须做点别的事......

这是脚本的一部分,它给了我上面的错误。

# Load the configuration file
with open(CONFIG_FILE,'r+') as f:
    sample_config = f.read()
#config = ConfigParser.RawConfigParser(allow_no_value=True)
config = configparser.RawConfigParser(allow_no_value=True)
config.readfp(io.BytesIO(sample_config))        

错误:

Traceback (most recent call last):
  File "RegisterDevice.py", line 47, in <module>
    config.readfp(io.BytesIO(sample_config))
TypeError: 'str' does not support the buffer interface

2 个答案:

答案 0 :(得分:2)

首先,在Python3中不推荐使用readfp(),您应该使用read_file()

最好的方法是在你想使用文件时直接使用read()函数。如果您希望文件中包含非ASCII字符,则应将编码设置为第二个参数。

替代方法是read_string()并直接给它一个字符串。

答案 1 :(得分:0)

我一直在做与此类似的工作,我相信这个脚本会运行,但您必须验证它是否能为您提供所需的结果:

import configparser

with open('.coveragerc','r+') as f:
#config = ConfigParser.RawConfigParser(allow_no_value=True)
    config = configparser.RawConfigParser(allow_no_value=True)
    config.readfp(f)