使用Flask通过post接收文本(或csv),并以文本/字符串模式读取(非二进制)

mpbci0fu  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(111)

我用Post方法接收Flask中的文本文件,问题是当我用流读取器readlines()或read()读取这些文件时,我得到了所有我不需要的二进制代码。
由于我正在使用谷歌云功能,我想避免保存文件,但在最坏的情况下可能是一个解决方案。

@app.route("/decode", methods=['POST'])
def receive():
    if request.method == 'POST':

        file = request.files['file']

        dialect = sniffer.sniff(
            str(file.readlines())
        )

使用readlines()接收的行示例如下:b'1238124124Product Text 001\n',任何解决方案?我需要将行作为字符串处理,因为我需要发现文件是CSV、位置文件还是两者的混合。
我试过使用file.read().decode('utf-8'),但没有成功。

cnh2zyt3

cnh2zyt31#

要将文件从二进制转换为文本,我建议使用io.TextIOWrapper。这样行就可以作为str使用。

import io

@app.post('/decode')
def receive():
    file = request.files.get('file')
    if file: 
        with io.TextIOWrapper(file) as fh:
            lines = fh.readlines()
            print(lines)
    # ...

相关问题