Python如何从文件读取数据部分填充固定大小数组并忽略空占位
代码修改方案
问题根源是你提前初始化了长度为10的全空字符串数组,未被赋值的位置会保留初始的空字符串占位。修改时只需调整数组初始化逻辑和赋值方式即可:
MAX_COLORS = 10 # 初始化为空列表,不提前填充占位符 colors = [] filename = input("输入颜色文件名称(primary.dat 或 secondary.dat): ") # 用with上下文管理器打开文件,无需手动close,更安全 with open(filename, 'r') as infile: line = infile.readline() # 只要读取的行不为空,且已存数据量没到上限就继续处理 while line != '' and len(colors) < MAX_COLORS: colors.append(str.rstrip(line)) line = infile.readline()
修改点说明
- 移除了初始的固定长度空数组初始化逻辑,改为空列表动态添加数据,最终列表长度等于实际读取到的有效数据行数,不会出现多余的空字符串占位
- 替换索引赋值为
append()方法新增元素,无需额外维护counter计数器,直接通过len(colors)判断是否达到容量上限 - 新增
with上下文管理器管理文件句柄,避免代码异常时忘记关闭文件导致的资源泄漏问题
如果你有必须保留固定长度数组定义的特殊要求,仅想过滤掉空字符串占位,可以在原有代码读取完成后加一行过滤代码:
colors = [c for c in colors if c != '']
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

