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

Python脚本CSV文件未生成求助:循环输出正常但无文件

问题描述

脚本运行时IDE能正常输出所有行数据,但运行结束后未生成包含所有行的data.csv文件,代码如下:

import itertools
import hashlib
import csv  # 原代码缺失该导入,会导致报错终止

chars = list(range(0,10)) 
numbers_list = list(range(0,25))
for comb in itertools.combinations_with_replacement(chars, 5): 
        for A in numbers_list:
            pure = str(A) + ':' + str(comb) 
            B = pure.replace(")", "").replace("(", "").replace("'", "").replace(",", "").replace(" ", "") 
            C = hashlib.sha256(B.encode('utf-8')).hexdigest()
            rows = [A , str(B), str(C)]
            print(rows)

header = ['A', 'B', 'C'] 
with open('data.csv', 'w', encoding='UTF8', newline='') as f: 
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerow(rows) 

print('end')
问题根源
  1. 导入缺失:原代码未导入itertools、hashlib、csv模块,会直接触发报错,导致脚本提前终止,无法执行到写入文件的步骤。
  2. 写入逻辑错误:写入文件的代码块放在循环外部,仅会写入循环最后一次生成的rows数据,而非所有循环产生的行。
修正方案

方案1:循环内逐行写入(适合小数据量)

将文件写入操作嵌入循环,每生成一行数据就写入一行:

import itertools
import hashlib
import csv

chars = list(range(0,10)) 
numbers_list = list(range(0,25))

header = ['A', 'B', 'C'] 
with open('data.csv', 'w', encoding='UTF8', newline='') as f: 
    writer = csv.writer(f)
    writer.writerow(header)  # 先写入表头
    for comb in itertools.combinations_with_replacement(chars, 5): 
        for A in numbers_list:
            pure = str(A) + ':' + str(comb) 
            B = pure.replace(")", "").replace("(", "").replace("'", "").replace(",", "").replace(" ", "") 
            C = hashlib.sha256(B.encode('utf-8')).hexdigest()
            rows = [A , str(B), str(C)]
            print(rows)
            writer.writerow(rows)  # 实时写入当前行

print('end')

方案2:先收集数据再批量写入(适合大数据量,减少IO开销)

先把所有行数据存入列表,最后一次性写入文件:

import itertools
import hashlib
import csv

chars = list(range(0,10)) 
numbers_list = list(range(0,25))

all_rows = []
header = ['A', 'B', 'C'] 
all_rows.append(header)  # 添加表头

for comb in itertools.combinations_with_replacement(chars, 5): 
    for A in numbers_list:
        pure = str(A) + ':' + str(comb) 
        B = pure.replace(")", "").replace("(", "").replace("'", "").replace(",", "").replace(" ", "") 
        C = hashlib.sha256(B.encode('utf-8')).hexdigest()
        rows = [A , str(B), str(C)]
        print(rows)
        all_rows.append(rows)  # 收集所有行数据

# 批量写入全部数据
with open('data.csv', 'w', encoding='UTF8', newline='') as f: 
    writer = csv.writer(f)
    writer.writerows(all_rows) 

print('end')
额外提醒

你的脚本组合数为C(10+5-1,5)=2002,乘以25后共50050行数据,两种方案均适用;若后续数据量级大幅提升,优先选择方案2以提高运行效率。

内容的提问来源于stack exchange,提问作者Juan Soto Valdez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:40:28