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

Python读取CSV调用Jira REST API遇行取值异常求助

问题解决:正确读取无表头CSV并调用Jira API上传附件

核心错误分析

你的代码存在几个关键问题,导致无法正确获取行数据:

  1. 未使用csv.reader解析数据:你初始化了datareader却直接用csvfile.readlines()循环,读出来的row是整行字符串,而非CSV分割后的列表。比如第一行TDEVOPST-5,E:\\Upload-PM\\att.csv,row[0]取的是第一个字符T,而非你需要的TDEVOPST-5。
  2. 文件打开模式错误:Python3中csv.reader需要文本模式('r'),而非二进制模式('rb'),否则会引发编码或解析异常。
  3. 缺失requests模块导入:代码中调用了requests.post但未导入requests,运行时会直接报错。
  4. URL拼接格式错误:用str({row[0]})会把内容转成集合格式(比如{'T'}),导致URL拼接结果异常。

修正后的代码

import csv
import requests  # 新增requests模块导入

filename1 = 'E:\\Upload-PM\\attachment.csv'
# 以文本模式打开文件,指定编码(根据你的文件实际编码调整)
with open(filename1, 'r', encoding='utf-8') as csvfile:
    datareader = csv.reader(csvfile)
    # 直接循环datareader,每次获取分割后的列表行数据
    for row in datareader:
        # 直接使用row[0]拼接URL,无需多余格式转换
        urlvalue = f"https://<url>.atlassian.com/rest/api/3/issue/{row[0]}/attachments"
        print(urlvalue)
        headers = {"X-Atlassian-Token": "nocheck"}
        # 用with语句管理文件,避免资源泄漏
        with open(row[1], 'rb') as file_obj:
            files = {'file': file_obj}
            r = requests.post(urlvalue, auth=('<email>','<token>'), files=files, headers=headers)
            print(r.status_code)
            print(r.text)

额外优化建议

  • 增加异常捕获:比如处理文件不存在、API调用失败、CSV行格式错误等情况,避免程序直接崩溃。
  • 若CSV文件存在空行,可在循环中增加判断:if not row: continue,跳过无效行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:35:33