使用while循环读取文件提取第二列至colv列表的代码问题求助
问题分析与代码修正
原代码的问题在于,直接将每个文件第二列的单个数值依次追加到colv中,导致colv变成了所有文件第二列数值的扁平化列表,而非每个元素对应一个文件的完整第二列。
修正后的代码
import os colv = [] i = 1 colvar = "step7_1.colvar" while os.path.isfile(colvar): current_col = [] # 用于存储当前文件的第二列所有值 with open(colvar, "r") as f_in: next(f_in) # 跳过首行 for line in f_in: # 处理可能的空行,避免索引错误 parts = line.strip().split() if len(parts) >= 2: current_col.append(parts[1]) colv.append(current_col) # 将当前文件的第二列列表加入colv i += 1 colvar = "step7_%d.colvar" % i
关键修改点
- 新增
current_col临时列表,用于单独存储每个文件的第二列所有数值 - 将每个文件的
current_col整体追加到colv,而非单个数值 - 增加了空行判断,避免因文件末尾空行或格式异常导致的
IndexError
内容的提问来源于stack exchange,提问作者amirre
相关产品推荐
相关产品推荐

