Python configparser在不下载的情况下从S3读取配置
有没有一种方法可以在不下载的情况下从s3读取.ini配置文件 我所尝试的: config.ini:Python configparser在不下载的情况下从S3读取配置,python,amazon-s3,configparser,Python,Amazon S3,Configparser,有没有一种方法可以在不下载的情况下从s3读取.ini配置文件 我所尝试的: config.ini: [DEFAULT] test = test1 test1 = test2 [ME] me = you you = he 代码: 它返回[] 我已经尽力确保这一点 obj['Body'].read() 正在返回一个包含config.ini内容的二进制文件。这是有效的。它在某个地方进一步中断。ConfigParser的read方法接受一个文件名,而您正在向它传递一个file对象 您可以改为使用该
[DEFAULT]
test = test1
test1 = test2
[ME]
me = you
you = he
代码:
它返回[]
我已经尽力确保这一点
obj['Body'].read()
正在返回一个包含config.ini内容的二进制文件。这是有效的。它在某个地方进一步中断。ConfigParser的
read
方法接受一个文件名,而您正在向它传递一个file对象
您可以改为使用该方法,以便将StreamingBody
对象的read
方法返回的内容传递给它:
config.read_string(obj['Body'].read().decode())
我得到一个错误:AttributeError:“StreamingBody”对象没有“readable”属性您的评论必须是二进制流,我查看了文档。最后,有效的是config.read_文件(io.TextIOWrapper(io.BytesIO(obj['Body'].read()))不需要使用类似文件的对象。使用类似文件的对象的目的是避免使用
read
方法将整个文件加载到内存中。但是显然,StreamingBody
没有实现所有必要的属性,以使其与TextIOWrapper
兼容,在这种情况下,您只需使用read\u string
方法即可。我已经相应地更新了我的答案。谢谢。顺便说一句,read()方法的文档说明它可以接受一个bytes对象。我昨天尝试了config.read(obj['Body'].read()),但仍然不起作用。类型(obj['Body'].read())返回字节。你知道它为什么不起作用吗?因为文档上说如果它是一个字节对象,那么它就会被当作一个文件名,就像它是一个字符串一样。
config.read_string(obj['Body'].read().decode())