Python 类型错误:';str';不支持缓冲区接口&;配置分析器

Python 类型错误:';str';不支持缓冲区接口&;配置分析器,python,python-3.x,Python,Python 3.x,我是这里的新手,我不想问像我的第一篇文章这样简单的问题,但我对Python一无所知,即使我是PHP/C程序员 我在Figway tools中有一个名为RegisterDevice.py的python脚本,用于注册我自己的传感器硬件。但是由于Python3.4的原因,该脚本的一些代码行并不像我预期的那样工作。这可能不是我的问题,但我没有太多的时间等待正式的解决方案,这就是为什么我认为我可以作为一个熟悉编程的人来解决它 我在网上搜索了解决方案,但还没有找到确切的解决方案。据我所知,字节和unicod

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

我在Figway tools中有一个名为RegisterDevice.py的python脚本,用于注册我自己的传感器硬件。但是由于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
回溯(最近一次呼叫最后一次):
文件“RegisterDevice.py”,第47行,在
config.readfp(io.BytesIO(示例配置))
TypeError:“str”不支持缓冲区接口

我所做的工作与此非常相似,我相信此脚本可以运行,但您必须验证它是否提供了所需的结果:

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)
首先,Python3中不推荐使用
readfp()
,您应该使用
read\u file()

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


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

尝试使用
open(CONFIG_FILE,'rb+')
,也就是说,将文件作为二进制文件打开,这样
read
将根据需要返回字节,而不是Unicode字符串。是的,我以前尝试过,但没有成功,错误也被更改了
TypeError:startswith first arg必须是字节或字节元组,而不是str
此错误来自python3.4/configparser.pyLooks,类似于该脚本的脚本与python3.4非常不兼容,因为它使用的字节和字符串是可互换的(就像在Python 2中一样)。除非您能够获得脚本的更新版本,否则您的选择是安装并使用Python 2.7,或者尝试将脚本修改为3。*与
2to3
工具兼容(如果您对Python一无所知,后者并不重要;我认为前者对任何人来说都非常容易)。您可以更改文件吗?它应该是
config.read(config\u文件)
,根本不应该打开该文件。