上传文件并用Pandas打开时Flask的问题
我有一个简单的Flask应用程序。我需要上传一个Excel文件,处理一下,然后把文件保存到磁盘上。为此,我写了以下代码。
app = Flask(__name__)
FILE_PATH = 'files'
app.config['UPLOAD_FOLDER'] = FILE_PATH
@app.post("/upload")
def upload():
# Read the File using Flask request
file = request.files['file']
filename = secure_filename(file.filename)
# Open with panda and do some work.This work don't affect so is no there
input_df = pd.read_excel(io.BytesIO(file.read()), 'sheetName', header=None)
# Save the file
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
在Flask控制台上没有错误,但是当我去上传的文件夹时,发现上传的Excel文件大小是0KB,打不开。
如果我不使用Pandas,也就是把代码中的input_df = pd.read_excel(excel_path, 'sheetName', header=None)
这一行删掉,其他部分都能正常工作,上传的Excel文件也没问题。
所以我想问的是,我在使用Pandas时做错了什么?我需要在读取完Excel后关闭它吗?我在看Flask和Pandas的文档,但没有找到相关的信息。
谢谢
1 个回答
2
当你第一次读取文件时,指针会移动到文件的末尾。如果你这时尝试保存文件,就会发现里面没有数据,因为指针已经到达了文件的末尾。
如果你想在读取文件后保存它,就必须在保存之前把指针移动回文件的开头。
# Open the file with pandas.
# ...
file.seek(0)
# Save the file.
# ...