【问题标题】:Reading excel via python3 in Apache NiFi (ExecuteStreamCommand)在 Apache NiFi (ExecuteStreamCommand) 中通过 python3 读取 excel
【发布时间】:2021-03-24 05:55:46
【问题描述】:

我通过 HttpRequest(不是重点)接收 Excel 文件并将其传递给 ExecuteStreamCommand 以获取特定单元格的值(通过 Python)。问题是我不知道如何从 sys.stdin 中准确获取 excel,以便通过 pandas 或 openpyxl 获取值。

 import sys
 print (type (sys.stdin))

在这样的构造中,类型

 import sys
 for line in sys.stdin:
     print (type (line))

在这个构造中,类型 (输出文件中有 387 行这样的行)

我才刚刚开始理解这个话题,我几天前开始阅读关于 python 的文章,几周前开始阅读 nifi

【问题讨论】:

  • 您好,请删除您问题的俄语部分; SO 是一个只有英文的网站。随时在Stack Overflow на русском 上发布该部分
  • @Nick 编辑了俄语部分。
  • 好的,不好意思,第一次在这里问
  • 没问题,不幸的是,这意味着有人不必要地否决了您的问题。

标签: python python-3.x excel apache-nifi


【解决方案1】:

如果不知道您的数据是什么样的以及您实际想要实现的目标,很难具体说明。

这篇博文讨论了使用 ExecuteStreamCommand 和 python 处理标准输入 https://mikethomsen.github.io/posts/2019/02/09/using-python-to-process-data-from-apache-nifi/

这个问题是关于使用 Python 和 pandas 从标准输入读取 xlsx using pandas read_excel to read from stdin

我觉得这样做可能比这样做更复杂。

作为替代方案,您可以将 Excel 工作表写入文件,然后将文件位置传递给脚本以获取例如

Http -> PutFile -> ExecuteProcess 或 ExecuteStreamCommand(文件位置作为参数)-> 流程的其余部分

意味着您不必担心处理标准输入,因为您只是在处理文件

【讨论】:

    【解决方案2】:
    import sys
    import pandas as pd
    import io
    bt = io.BytesIO(sys.stdin.buffer.read())
    sheet = pd.read_excel(bt, "SheetName1", header=None) 
    res = sheet.at[1,2] #Cell 'C2'
    print(res)
    

    通过反复试验,找到了答案。 这段代码正在从 excel(sys.stdin) 中提取特定单元格的值

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多