上传文件并用Pandas打开时Flask的问题

1 投票
1 回答
29 浏览
提问于 2025-04-14 16:20

我有一个简单的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.
# ...

撰写回答