Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 从AWS S3 bucket引用对象时,无法执行pandas read_excel函数两次_Python_Pandas_Amazon S3 - Fatal编程技术网

Python 从AWS S3 bucket引用对象时,无法执行pandas read_excel函数两次

Python 从AWS S3 bucket引用对象时,无法执行pandas read_excel函数两次,python,pandas,amazon-s3,Python,Pandas,Amazon S3,尝试从存储在S3存储桶中的同一excel文件中读取多个工作表 代码第一次运行正常,但第二次尝试执行read_excel函数从同一excel文件中读取另一个工作表时出错。虽然“obj”对象保持不变,但read_excel函数不起作用 obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0,0])) File1 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sh

尝试从存储在S3存储桶中的同一excel文件中读取多个工作表

代码第一次运行正常,但第二次尝试执行read_excel函数从同一excel文件中读取另一个工作表时出错。虽然“obj”对象保持不变,但read_excel函数不起作用

obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0,0]))
File1 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sheet_name = "Sheet1",dtype=str, header= 4)
File2 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sheet_name = "Sheet2",dtype=str, header= 4)
value错误:文件不是可识别的excel文件

现在,在执行read_excel函数从同一个excel文件中读取第二张工作表之前,再次执行get_object函数

像这样

obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0,0]))
File1 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sheet_name = "Sheet1",dtype=str, header= 4)
obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0,0]))
File2 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sheet_name = "Sheet2",dtype=str, header= 4)
obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0,0]))
File3 = pd.read_excel(io.BytesIO(obj['Body'].read()) , sheet_name = "Sheet3",dtype=str, header= 4)

这当然是非常冗余的编码,所以请寻求一些建议。谢谢

保存您
阅读的内容
以便重复使用

obj = S3_Client.get_object(Bucket=bucket_name, Key=str(XLSX_Keys.iloc[0, 0]))
content = obj['Body'].read()

File1 = pd.read_excel(io.BytesIO(content), sheet_name="Sheet1", dtype=str, header=4)
File2 = pd.read_excel(io.BytesIO(content), sheet_name="Sheet2", dtype=str, header=4)

Guess
.read()
只能调用一次?你最好把obj['Body'].read()保存在一个变量中,然后重新使用它。谢谢阿兹罗!!!看起来在第一次调用后,文件中没有任何内容可供读取(错误原因为“ValueError:文件不是可识别的excel文件”)。需要再次执行.read()以再次打开文件并再次读取内容。