本文目录导读:

Python 实现(最灵活)
#!/usr/bin/env python3
import os
import glob
def merge_text_files(input_files, output_file, separator="\n"):
"""合并多个文本文件"""
with open(output_file, 'w', encoding='utf-8') as outfile:
for i, file_path in enumerate(input_files):
# 添加文件分隔标志(可选)
if i > 0:
outfile.write(separator)
# 写入文件内容
with open(file_path, 'r', encoding='utf-8') as infile:
outfile.write(infile.read())
print(f"成功合并 {len(input_files)} 个文件到 {output_file}")
# 使用示例
if __name__ == "__main__":
# 方法1:指定文件列表
files = ["file1.txt", "file2.txt", "file3.txt"]
merge_text_files(files, "merged.txt")
# 方法2:匹配通配符
import glob
log_files = glob.glob("logs/*.log")
merge_text_files(log_files, "all_logs.txt")
批处理脚本 (Windows)
@echo off
setlocal enabledelayedexpansion
:: 合并所有txt文件到一个文件
set output_file=merged.txt
:: 清空或创建输出文件
type nul > %output_file%
:: 遍历并合并文件
for %%f in (*.txt) do (
if not "%%f"=="%output_file%" (
echo 合并文件: %%f
type "%%f" >> %output_file%
echo. >> %output_file% :: 添加换行
)
)
echo 文件合并完成!
Bash 脚本 (Linux/Mac)
#!/bin/bash
# 合并多个文件
output_file="merged.txt"
# 清空输出文件
> "$output_file"
# 合并所有txt文件(排除输出文件自身)
for file in *.txt; do
if [ "$file" != "$output_file" ]; then
echo "合并文件: $file"
cat "$file" >> "$output_file"
echo "" >> "$output_file" # 添加换行
fi
done
echo "文件合并完成!"
Node.js 实现
const fs = require('fs');
const path = require('path');
async function mergeFiles(inputFiles, outputFile) {
const writeStream = fs.createWriteStream(outputFile);
for (const filePath of inputFiles) {
const readStream = fs.createReadStream(filePath);
await new Promise((resolve, reject) => {
readStream.pipe(writeStream, { end: false });
readStream.on('end', () => {
writeStream.write('\n'); // 添加分隔
resolve();
});
readStream.on('error', reject);
});
}
writeStream.end();
console.log(`成功合并 ${inputFiles.length} 个文件`);
}
// 使用示例
const files = ['file1.txt', 'file2.txt', 'file3.txt'];
const pattern = require('glob');
pattern('logs/*.log', (err, files) => {
if (!err) {
mergeFiles(files, 'merged.log');
}
});
PowerShell 脚本
# 合并所有txt文件
$outputFile = "merged.txt"
$files = Get-ChildItem -Path . -Filter "*.txt" | Where-Object { $_.Name -ne $outputFile }
# 清空输出文件
Clear-Content -Path $outputFile -Force
foreach ($file in $files) {
Write-Host "合并文件: $($file.Name)"
Get-Content $file.FullName | Add-Content $outputFile
Add-Content $outputFile "" # 添加空行分隔
}
Write-Host "文件合并完成!"
高级功能版本(Python)
import os
import glob
from datetime import datetime
class FileMerger:
def __init__(self):
self.options = {
'add_filename': True, # 添加文件名标记
'add_timestamp': False, # 添加时间戳
'separator': '\n---\n', # 文件分隔符
'encoding': 'utf-8'
}
def merge(self, input_pattern, output_file, recursive=False):
"""高级文件合并功能"""
# 获取文件列表
files = glob.glob(input_pattern, recursive=recursive)
files.sort() # 排序
with open(output_file, 'w', encoding=self.options['encoding']) as outfile:
for i, file_path in enumerate(files):
if i > 0:
outfile.write(self.options['separator'])
# 添加文件信息
if self.options.get('add_filename'):
filename = os.path.basename(file_path)
outfile.write(f"\n# 文件: {filename}\n")
if self.options.get('add_timestamp'):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
outfile.write(f"# 合并时间: {timestamp}\n\n")
# 写入文件内容
with open(file_path, 'r', encoding=self.options['encoding']) as infile:
outfile.write(infile.read())
return len(files)
# 使用示例
merger = FileMerger()
merger.options['add_filename'] = True
merger.options['separator'] = '\n\n# === 下一个文件 ===\n\n'
count = merger.merge("logs/*.log", "merged_logs.txt")
print(f"成功合并 {count} 个文件")
注意事项:
- 编码问题:处理中文文件时注意编码(UTF-8/GBK)
- 大文件处理:大文件建议使用流式处理(如 Node.js 的流)
- 文件排序:合并前应考虑文件顺序
- 文件大小:监控输出文件大小,避免磁盘溢出
- 二进制文件:文本合并方法不适用于二进制文件
选择哪种脚本取决于你的操作系统和具体需求,Python 版本最为通用且功能最完整。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播