You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python-jira不下载文件读取Jira的Excel/CSV附件内容?

实现方法

完全可以通过直接读取附件的字节流来实现,无需将文件保存到本地。核心思路是利用python-jira获取附件的原始字节内容,再通过BytesIO将其包装为类文件对象,最后用pandas直接读取为DataFrame。

前置依赖安装

先确保安装所需的包:

pip install python-jira pandas openpyxl xlrd
  • openpyxl用于读取.xlsx格式文件
  • xlrd用于读取.xls格式文件(注意:xlrd 2.0及以上版本不再支持.xlsx,若只处理.xlsx可只装openpyxl)

代码实现示例

from jira import JIRA
import pandas as pd
from io import BytesIO

# 初始化Jira连接(根据你的认证方式调整,这里用基础认证)
jira = JIRA(
    server="https://your-jira-instance.com",
    basic_auth=("your-username", "your-api-token-or-password")
)

# 获取目标工单(替换为你的工单KEY,比如PROJ-456)
issue = jira.issue("PROJ-456")

# 遍历并处理工单中的附件
for attachment in issue.fields.attachment:
    # 处理CSV附件
    if attachment.filename.lower().endswith(".csv"):
        # 获取附件字节流
        raw_content = attachment.get()
        # 直接读取为DataFrame
        csv_df = pd.read_csv(BytesIO(raw_content))
        print(f"已读取CSV附件: {attachment.filename}")
        print(csv_df.head())
    
    # 处理Excel附件(支持.xlsx和.xls)
    elif attachment.filename.lower().endswith((".xlsx", ".xls")):
        raw_content = attachment.get()
        # 根据文件后缀选择对应的引擎
        engine = "openpyxl" if attachment.filename.lower().endswith(".xlsx") else "xlrd"
        excel_df = pd.read_excel(BytesIO(raw_content), engine=engine)
        print(f"已读取Excel附件: {attachment.filename}")
        print(excel_df.head())

关键说明

  • attachment.get()方法会直接返回附件的二进制内容,无需写入本地文件
  • BytesIO将字节流转换为pandas可识别的类文件对象,实现"无文件"读取
  • 若只需处理特定附件,可通过attachment.filename进行筛选(比如指定文件名)

内容的提问来源于stack exchange,提问作者timo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:57:37