使用Python生成匹配字段全长度定义的测试数据、调整分隔符及脚本优化咨询
替换分隔符为ASCII '\031'
Python原生支持'\031'这个ASCII转义字符(也可等价写作'\x1f'),直接修改现有拼接逻辑即可:
- 可先定义分隔符常量,方便后续按需切换(比如在
|和\031之间切换):SEP = '\031' - 把原代码中拼接字段时的
'|'替换为SEP即可,原代码行:final_string += int(length) * str(character) + '|'
修改为:final_string += int(length) * str(character) + SEP
如果要去掉原代码末尾多出来的多余分隔符,建议调整生成逻辑为先存字段列表,再一次性拼接,具体可参考下文的优化脚本。
脚本优化方向
- 删除冗余调试输出:循环内的
print(int(length))仅为调试用,正式运行可直接移除,避免控制台输出无关内容。 - 避免首尾多余分隔符:当前逐字段拼接加分隔符的写法,会在最后一个字段后多拼接一个分隔符。更合理的写法是先生成所有字段的列表,再用
SEP.join(字段列表)拼接,自动避免多余分隔符。 - 兼容配置文件格式波动:给配置读取到的长度、字符加
strip()处理,规避配置中逗号后带空格、行首行尾多空白的问题。 - 支持批量生成多行:可增加行数配置参数,循环生成多行数据,无需重复运行脚本。
- 直接写入输出文件:无需手动复制控制台输出,可直接将生成结果写入指定文件。
- 增加基础校验:可加入长度为正整数、填充字符非空的校验,避免配置错误生成无效数据。
优化后参考脚本
from csv import reader # 可配置参数,按需修改即可 SEP = '\031' # 切换为|直接改为'|' INPUT_SPEC_FILE = 'colspec1.data' OUTPUT_DATA_FILE = 'test_data.txt' GENERATE_ROW_COUNT = 3 # 需要生成的测试数据行数 # 读取并解析字段配置 with open(INPUT_SPEC_FILE, 'r', encoding='utf-8') as f: csv_reader = reader(f) # 过滤空行,同时处理配置项的空白字符 field_specs = [ (int(length_str.strip()), char.strip()) for length_str, char in csv_reader if length_str.strip() and char.strip() ] # 批量生成测试数据行 output_rows = [] for _ in range(GENERATE_ROW_COUNT): field_list = [length * char for length, char in field_specs] output_rows.append(SEP.join(field_list)) # 写入文件 with open(OUTPUT_DATA_FILE, 'w', encoding='utf-8', newline='') as f: f.write('\n'.join(output_rows))
内容的提问来源于stack exchange,提问作者user2647763 - RIMD
相关产品推荐
相关产品推荐

