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

循环写入CSV时仅保留最后一条系统数据的问题排查

解决CSV文件仅保留最后一组数据的问题

问题根源

你在遍历每个硬件系统的循环内部,每次都用open('ports.csv', 'w')打开文件——w模式会直接清空原有文件并重新创建,导致前25个系统的数据全部被最后一次循环的文件初始化操作覆盖,最终只留下最后一个系统的数据。同时重复打开文件写入单条数据的操作既冗余又容易出问题。

修复后的代码

import requests
import json
import urllib3
import csv
import os


urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 先初始化CSV文件,只写一次表头
header = ['Array', 'FCS_port', 'WWN']
with open('ports.csv', 'w', encoding='UTF8', newline="") as f:
    writer = csv.writer(f)
    writer.writerow(header)

# 遍历所有硬件系统
with open('arrays.txt', 'r') as f:
    for line in f:
        data = line.strip()
        s1 = str(data)
        
        # 认证请求
        token_url = "https://{}/api/1.17/auth/apitoken".format(s1)
        payload = {'username': 'user', 'password': 'password'}
        headers = {'Content-Type': 'application/json'}
        response = requests.request("POST", token_url, data=json.dumps(payload),
                                   headers=headers, verify=False, timeout=3000)
        token = response.text

        # 建立会话
        session = requests.Session()
        sessionUrl = "https://{}/api/1.17/auth/session".format(s1)
        payload = response.text
        response = session.request("POST", sessionUrl, data=payload, headers=headers,
                                  verify=False, timeout=3000)

        # 获取端口信息
        baseUrl = "https://{}/api/1.17/port".format(s1)
        response = session.request("GET", baseUrl, headers=headers, verify=False,
                                  timeout=3000)
        info = json.loads(response.content)

        # 追加当前系统的端口数据到CSV
        with open('ports.csv', 'a', newline='') as p:
            writer = csv.writer(p)
            for i in info:
                portI = (s1, i['name'], i['wwn'])
                writer.writerow(portI)
                print(portI)

关键修改点

  • 将CSV文件的表头写入操作移到系统循环外部,仅执行一次,避免重复清空文件。
  • 每个系统的数据统一用a(追加)模式写入,确保所有数据都追加到文件末尾,不会被覆盖。
  • 优化了数据写入逻辑,每个系统只打开一次文件写入所有数据,减少IO操作次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:36:23