Python 类型错误:';str';不支持缓冲区接口&;配置分析器
我是这里的新手,我不想问像我的第一篇文章这样简单的问题,但我对Python一无所知,即使我是PHP/C程序员 我在Figway tools中有一个名为RegisterDevice.py的python脚本,用于注册我自己的传感器硬件。但是由于Python3.4的原因,该脚本的一些代码行并不像我预期的那样工作。这可能不是我的问题,但我没有太多的时间等待正式的解决方案,这就是为什么我认为我可以作为一个熟悉编程的人来解决它 我在网上搜索了解决方案,但还没有找到确切的解决方案。据我所知,字节和unicode字符串在Python3.x中是两种不同的类型,但我不知道我必须在哪里编码,或者可能在代码中将字符串解码为其他类型。也许我得做点别的 下面是脚本中出现上述错误的部分Python 类型错误:';str';不支持缓冲区接口&;配置分析器,python,python-3.x,Python,Python 3.x,我是这里的新手,我不想问像我的第一篇文章这样简单的问题,但我对Python一无所知,即使我是PHP/C程序员 我在Figway tools中有一个名为RegisterDevice.py的python脚本,用于注册我自己的传感器硬件。但是由于Python3.4的原因,该脚本的一些代码行并不像我预期的那样工作。这可能不是我的问题,但我没有太多的时间等待正式的解决方案,这就是为什么我认为我可以作为一个熟悉编程的人来解决它 我在网上搜索了解决方案,但还没有找到确切的解决方案。据我所知,字节和unicod
# 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文件)
,根本不应该打开该文件。