Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python configparser在不下载的情况下从S3读取配置_Python_Amazon S3_Configparser - Fatal编程技术网

Python configparser在不下载的情况下从S3读取配置

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对象 您可以改为使用该

有没有一种方法可以在不下载的情况下从s3读取.ini配置文件

我所尝试的:

config.ini:

[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())