如何拆分文本文件并以文件内条目作为新文件名
解决方法:将制表符分隔的文本行拆分为独立文件
这里有两个实用的方案,不管你习惯用命令行脚本还是Python都能轻松搞定你的需求:
方案1:Bash命令行脚本(适合Linux/macOS/WSL环境)
如果你用的是类Unix系统或者Windows的WSL,直接用bash脚本最快捷:
#!/bin/bash # 假设你的原文件名为input.txt,替换成你实际的文件名 while IFS=$'\t' read -r first_col second_col; do # 将整行内容写入以第二个条目命名的文件 echo -e "$first_col\t$second_col" > "$second_col" done < input.txt
关键说明:
IFS=$'\t':设置字段分隔符为制表符,确保正确拆分每行的两个条目read -r first_col second_col:把每行的两个部分分别存入变量first_col和second_colecho -e "$first_col\t$second_col":保留原行的制表符格式写入新文件;如果只需要保存第一个字段,改成echo "$first_col"即可- 如果你希望新文件带后缀(比如
.txt),把"$second_col"改成"$second_col.txt"
方案2:Python脚本(跨平台,Windows/macOS/Linux通用)
如果需要跨平台支持,或者要处理一些异常情况(比如空行、格式错误的行),Python脚本更稳妥:
# 替换成你的输入文件路径 input_file = "input.txt" with open(input_file, 'r', encoding='utf-8') as infile: for line_num, line in enumerate(infile, 1): # 去除首尾的换行符和空白字符 cleaned_line = line.strip() # 跳过空行 if not cleaned_line: continue # 按制表符拆分字段 columns = cleaned_line.split('\t') # 检查是否正好是两个字段 if len(columns) != 2: print(f"第{line_num}行格式错误(不是两个制表符分隔的条目),已跳过:{cleaned_line}") continue # 获取文件名和内容 filename = columns[1].strip() # 如果只需要保存第一个字段,把下面的cleaned_line改成columns[0].strip() content = cleaned_line # 写入新文件 try: with open(filename, 'w', encoding='utf-8') as outfile: outfile.write(content + '\n') print(f"已成功创建文件:{filename}") except Exception as e: print(f"创建文件{filename}失败:{str(e)}")
额外提示:
- 如果原文件中存在重复的第二个条目,后面的行会覆盖之前的文件。如果要避免覆盖,可以给重复文件名加序号(比如
ds104_1、ds104_2) - 确保第二个条目里不包含系统不允许的文件名字符(比如
/、\、:、*等),否则会创建文件失败
内容的提问来源于stack exchange,提问作者Vivek Sharma
相关产品推荐
相关产品推荐

