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

我在FASK控制台上没有错误,但当我打开上传文件夹时,我看到上传的EXCEL文件有0KB,我无法打开.

如果我不用Panda打开,那就是从代码中删除input_df = pd.read_excel(excel_path, 'sheetName', header=None),一切都很好.上传的EXCEL文件效果良好.

所以我的暗示就是我做错了什么 和Pandas 一起?我需要在读完EXCEL或类似的东西后关闭吗?我正在阅读Flask 和Pandas 的文档,但没有看到任何相关的东西.

谢谢

推荐答案

第一次读取文件时,指针在文件中移动到结尾.如果您随后try 保存文件,将没有数据剩余,因为指针已经到达末尾.

如果您要在读取文件后保存该文件,则需要在保存文件之前将指针移回开头.

# Open the file with pandas. 
# ...

file.seek(0)

# Save the file.
# ...

Python相关问答推荐

计算组中唯一值的数量

如何从.cgi网站刮一张表到rame?

如何在Raspberry Pi上检测USB并使用Python访问它?

Pandas:将多级列名改为一级

Python+线程\TrocessPoolExecutor

根据列值添加时区

转换为浮点,pandas字符串列,混合千和十进制分隔符

Python—转换日期:价目表到新行

从列表中获取n个元素,其中list [i][0]== value''

如何在海上配对图中使某些标记周围的黑色边框

PYTHON、VLC、RTSP.屏幕截图不起作用

为什么Python内存中的列表大小与文档不匹配?

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

Python类型提示:对于一个可以迭代的变量,我应该使用什么?

Python Mercury离线安装

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

PySpark:如何最有效地读取不同列位置的多个CSV文件

随机森林n_估计器的计算

函数()参数';代码';必须是代码而不是字符串

如何使用Polars从AWS S3读取镶木地板文件