无法解析使用 Flask 上传的 .csv 文件

2024-06-24

我正在尝试上传 CSV 文件,对其进行处理以生成结果,然后写回(下载)包含结果的新 CSV 文件。 我对 Flask 很陌生,我无法获得“正确的”csv.reader对象进行迭代和处理。 这是到目前为止的代码,

__author__ = 'shivendra'
from flask import Flask, make_response, request
import csv

app = Flask(__name__)

def transform(text_file_contents):
    return text_file_contents.replace("=", ",")


@app.route('/')
def form():
    return """
        <html>
            <body>
                <h1>Transform a file demo</h1>

                <form action="/transform" method="post" enctype="multipart/form-data">
                    <input type="file" name="data_file" />
                    <input type="submit" />
                </form>
            </body>
        </html>
    """

@app.route('/transform', methods=["POST"])
def transform_view():
    file = request.files['data_file']
    if not file:
        return "No file"

    file_contents = file.stream.read().decode("utf-8")
    csv_input = csv.reader(file_contents)
    print(file_contents)
    print(type(file_contents))
    print(csv_input)
    for row in csv_input:
        print(row)

    result = transform(file_contents)

    response = make_response(result)
    response.headers["Content-Disposition"] = "attachment; filename=result.csv"
    return response

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5001, debug=True)

终端输出是

127.0.0.1 - - [12/Oct/2015 02:51:53] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [12/Oct/2015 02:51:59] "POST /transform HTTP/1.1" 200 -
4,5,6
<class 'str'>
<_csv.reader object at 0x105149438>
['1']
['', '']
['2']
['', '']
['3']
[]
['4']
['', '']
['5']
['', '']
['6']

而我读到的文件是

当我迭代 csv.reader 对象时,我做错了什么,没有得到代表 2 行的 2 个列表?


好的,你的脚本有一个主要问题,csv.reader如前所述here https://docs.python.org/2/library/csv.html#csv.reader需要一个文件对象或至少一个支持迭代器协议的对象。你正在通过一个str它确实实现了迭代器协议,但它不是遍历行,而是遍历字符。这就是为什么你有这样的输出。

首先,它给出一个字符1其中csv.reader视为一条带有一个字段的线。之后str给出另一个单个字符,其中csv.reader视为具有两个空字段的行(因为逗号是字段分隔符)。整个过程都是这样str直到耗尽。

解决方案(或至少一种解决方案)是将str到类似文件的对象中。我尝试使用提供的流flask.request.files["name"],但这不会遍历各行。接下来,我尝试使用cStringIO.StringIO这似乎也有类似的问题。我最终在this https://stackoverflow.com/questions/1875956/how-can-i-access-an-uploaded-file-in-universal-newline-mode建议的问题io.StringIO通用换行模式下的对象有效。我最终得到了以下工作代码(也许它可以更好):

__author__ = 'shivendra'
from flask import Flask, make_response, request
import io
import csv

app = Flask(__name__)

def transform(text_file_contents):
    return text_file_contents.replace("=", ",")


@app.route('/')
def form():
    return """
        <html>
            <body>
                <h1>Transform a file demo</h1>

                <form action="/transform" method="post" enctype="multipart/form-data">
                    <input type="file" name="data_file" />
                    <input type="submit" />
                </form>
            </body>
        </html>
    """

@app.route('/transform', methods=["POST"])
def transform_view():
    f = request.files['data_file']
    if not f:
        return "No file"

    stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
    csv_input = csv.reader(stream)
    #print("file contents: ", file_contents)
    #print(type(file_contents))
    print(csv_input)
    for row in csv_input:
        print(row)

    stream.seek(0)
    result = transform(stream.read())

    response = make_response(result)
    response.headers["Content-Disposition"] = "attachment; filename=result.csv"
    return response

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5001, debug=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法解析使用 Flask 上传的 .csv 文件 的相关文章

  • 从networkx中的文件中读取具有pos属性的节点

    我是 Networkx 的新手 我有一个包含以下格式的节点位置的文件 0 23 23 12 23 where 0是一个节点 23 23 and 12 23分别是X和Y坐标 有谁知道如何读取节点pos属性 使用类似的函数read edgeli
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • 查找数据集中的异常值

    我有一个 python 脚本 它创建服务器正常运行时间和性能数据列表的列表 其中每个子列表 或 行 包含特定集群的统计信息 例如 格式良好的它看起来像这样 Cluster Availability Requests Sec Errors S
  • 使用不带引号的块样式的 Python YAML 转储

    如何使用 PyYAML 加载和转储 YAML 以便它尽可能地使用原始样式 我有 Python 来加载和转储 YAML 数据 例如 import sys import yaml def represent dictorder self dat
  • Python:访问另一个类中一个类的属性和方法

    假设我有两个 A 类和 B 类 Class A A s attributes and methods here Class B B s attributes and methods here 现在我可以评估 B 类对象中 A 的属性 如下所
  • Python TypeError:不支持的操作数类型 -:“int”和“function”

    我是 Python 初学者 正在做一项作业 我不断得到TypeError unsupported operand type s for int and function 即使在研究了错误并应用了建议的修复之后 我并不是在寻找任何人给我一个解
  • 我如何知道Python的unicode函数识别的所有支持的编码

    Python 有一个unicode将字节流转换为 unicode 字符串的内置函数 我只是希望我能查询所有可用的encoding在我的系统上 但如何 这个问题的原因是 有人使用 MAC OS X 向我发送了一封内容编码为 iso 2022
  • 如何在嵌套列表中查找给定元素?

    这是我的迭代解决方案 def exists key arg if not arg return False else for element in arg if isinstance element list for i in elemen
  • 在 Python 中解压存档时出现错误

    我使用 Python 下载 bz2 文件 然后我想使用以下方法解压存档 def unpack file dir file cwd os getcwd os chdir dir print Unpacking file s file cmd
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • 为什么我的字符串中出现不需要的换行符?

    这应该很简单 这很愚蠢 但我无法让它发挥作用 我有一个在读取文件时定义的标头 if gene env in line or gene HIV2gp7 in line header line 现在这个标题看起来像 gt lcl NC 0018
  • 如何为 PyYAML 编写代表程序?

    我想要一个自定义函数来序列化任意 python 对象 就像 json dump 函数有一个名为 default 的可选参数 如果对象不是 json 可序列化的 它应该是 json 转储器将调用的函数 我只是想从 json 包中执行相当于此操
  • 如何在我的 GUI 上绘图

    我正在设计一个 GUIPyQt当我单击一个按钮来绘制我创建的函数的数据图时 我需要显示一个 matplotlib pylab 窗口 它就像 Matlab 中使用的运行时 每次按下该按钮时 我都想将 matplotlib pylab 窗口保留
  • 如何在Python中将N毫秒添加到日期时间

    我正在设置一个日期时间变量 fulldate datetime datetime strptime date time Y m d H M S f 其中日期和时间是适合日期时间性质的字符串 如何将此日期时间增加 N 毫秒 Use timed
  • 基于 Pandas 中特殊字符分隔列中的每个项目进行聚合

    我输入的数据如下 Date Investment Type Medium 1 1 2000 Mutual Fund Stocks Fixed Deposit Real Estate Own Online Through Agent 1 2
  • python请求ssl握手失败

    每次我尝试这样做 requests get https url 我收到这条消息 import requests gt gt gt requests get https reviews gethuman com companies Trace
  • 从Python列表中挑选出具有特定索引的项目

    我确信在 Python 中有一种很好的方法可以做到这一点 但我对这门语言还很陌生 所以如果这是一个简单的方法 请原谅我 我有一个列表 我想从该列表中挑选某些值 我想要挑选的值是列表中索引在另一个列表中指定的值 例如 indexes 2 4
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • print() 函数的有趣/奇怪的机制

    我正在学习Python 我目前正在学习如何定义自己的函数 并且在尝试理解返回值和打印它之间的区别时遇到了一些困难 我读到的关于这个主题的描述对我来说不太清楚 所以我开始自己尝试 我想我现在已经明白了 如果我没记错的话 区别在于你可以传递 a
  • 如何限制单元测试的最大运行时间?

    我目前正在运行一些单元测试 这些测试可能需要很长时间才能失败或无限期地运行 在成功的测试运行中 它们总是会在一定的时间内完成 是否可以创建一个 pytest 单元测试 如果在一定时间内未完成 该测试就会失败 您可以安装 pytest tim

随机推荐

  • 单击 UITabBarController 时的自定义操作

    我有一个选项卡栏控制器 其中添加了四个导航控制器 导航控制器在选项卡栏控制器中显示为选项卡栏项目 现在我想向选项卡栏添加第五个按钮 该按钮不会打开另一个视图 但会触发一些自定义代码 我想在单击该选项卡栏项目时显示覆盖的 共享菜单 无论用户位
  • PdfBox 将字体嵌入到现有文档中

    我有一个 pdf 文件 它在 Okular 或任何 PDF 查看器 中显示字体属性 如下所示 Name Helvetica Type Type1 File usr share fonts truetype liberation2 Liber
  • 获取redis主哨兵

    我正在尝试获取当前正在监视 redis master 的所有哨兵的列表 我知道如果我有一个哨兵我可以使用sentinel sentinels mymaster但如果我没有 Sentinel 的任何地址 我怎样才能获得它们 没有直接命令可以从
  • 不变违规:本机模块不能为 Null。仅在 iOS 上显示错误

    背景我开发一个由 Expo 管理的 React Native 应用程序已经快一年了 但由于当时我既没有 Mac 也没有 iPhone 所以无法在 iOS 上测试它 我设法购买了 iPhone 8 今天我尝试在其上运行该应用程序 但没有结果
  • 在 SQL 数据库中存储自定义字段的首选方式是什么?

    我的朋友正在开发一款供不同独立医疗单位使用的产品 该数据库存储了在不同时间进行的大量测量数据 例如体温 血压等 让我们假设它们保存在一个名为的表中exams有柱子temperature pressure等 以及id patient id a
  • 排版(字母)的某些部分响应窗口的宽度/高度?

    我不确定这样的事情是否可以通过 CSS 实现 但是这个社区中的才华横溢的人们已经多次证明我错了 所以我们开始吧 我想知道字母的某些水平部分是否可能O U and E可以在保持其位置的同时响应窗口的宽度吗 在下图中 我绘制了响应式排版如何对窗
  • 检测按下的修饰键而不触发键盘或鼠标事件

    当用户按住修饰键 Shift Alt Ctrl 时 我的应用程序会更改其状态 我使用 keydown keyup 事件跟踪修饰键 var altPressed window onkeydown window onkeyup function
  • 删除带有全局索引的分区表?

    PROCEDURE purge partitions p owner IN VARCHAR2 p name IN VARCHAR2 p retention period IN NUMBER IS BEGIN FOR partition re
  • JS Globalize - 加载 json cldr

    我的最新版本有问题globalize js 为了使用它 我必须加载cldr modules和语言定义 现在我从全球化文档中得到了这个例子 loading needed modules get Scripts cldr supplementa
  • 使用 JAX-RS 通过 HTTP PUT 流式传输字节

    我有一个工作流程 涉及从 Java 客户端到 Web 服务器执行 HTTP POST 帖子的正文有一个规范对象 然后 我将其从我的网络服务器传递到 Apache ZooKeeper 它在服务器上以自己的进程运行 后者运行大量计算 我正在努力
  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 更改默认帮助键行为

    我有一个 NSWindowController 的子类 在我的子类中 我有一个 keyDown 方法 当我按下键盘上的帮助键时 我的 keyDown 方法不会被调用 我希望它是这样的 因为我需要做一些自定义的事情 现在 当我按下帮助键时 光
  • intellij idea中有测试资源管理器吗? (观察所有测试而不执行)?我使用测试NG

    在 VS 和 Resharper 中 我可以在执行之前看到解决方案中的所有测试 请参阅https www jetbrains com help resharper Reference Windows Unit Test Explorer h
  • jQuery 中如何计算 div 的高度?

    我处于这样的情况 我必须根据其中的内容量设置 div 的高度 我不能给出min height在里面 我知道我们可以通过以下方式计算 div 的高度 divid height 那么 有什么方法可以在不包含 height 参数的情况下计算 di
  • 如何获取从中提取数据的服务器的服务器地址

    我知道我们使用cursor getServerAddress 在Java 驱动程序中拥有它 但是 我在 C 中找不到任何相关的调用 不幸的是 在深入研究 C 驱动程序源代码 以及 Java 源代码以了解它在做什么 之后 用作获取一部分的实际
  • 如何在 div/p 标签左上角/右上角显示类似聊天框的内容

    我们正在开发聊天应用程序在该应用程序中 我们在 div 中显示文本 但我想给 css 像聊天框方向为了那个原因div 右上 左上边框 就像下面的屏幕截图一样 我在屏幕截图中用红色标记了我到底需要做什么 requirement screen
  • jQuery 在 ajax 成功时删除元素

    I have
  • F# 中灵活类型注释的用途是什么?

    我正在学习 F 我不明白灵活类型的目的 或者更好的是 我无法理解这样写的区别 set TextOfControl c Control s c Text lt s 并写下 set TextOfControl c T when T gt Con
  • 为什么不建议使用 MassTransit 在 Web 应用程序中托管接收端点?

    我正在开发 ASP NET MVC 5 应用程序 基于 nopCommerce 我想使用 MassTransit 与另一个用于库存管理 计费等的应用程序进行通信 如果我可以将接收端点直接添加到 Web 应用程序中 而不必为此创建 Windo
  • 无法解析使用 Flask 上传的 .csv 文件

    我正在尝试上传 CSV 文件 对其进行处理以生成结果 然后写回 下载 包含结果的新 CSV 文件 我对 Flask 很陌生 我无法获得 正确的 csv reader对象进行迭代和处理 这是到目前为止的代码 author shivendra