Python - 根据文件前缀合并多个文件
Python - merge multiple files based on file prefix
Python 2.7
我有多个文件:
文件A_01.txt文件内容:aaaa
文件A_02.txt文件内容:bbbb
文件B_01.txt文件内容:aaaB
文件B_02.txt文件内容:bbbB
文件D_01.txt文件内容内容:aaaD
文件D_02.txt文件内容内容:bbbD
我需要根据文件前缀创建 "merged" 文件,
对于以 A_0 开头的文件,创建合并文件 merged_A.txt 并将所有以 A_0、
开头的文件的内容放在那里
merged_B.txt 对于以 B_
开头的文件
所有文件都一样
# get all files in folder
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:3]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", "merged" + "_" + prefix + ".txt"), 'w') as outfile:
# go through all files and merge it into outfile
for file in files:
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")
以上代码,生成合并文件,但是,两个合并文件都包含所有文件的内容
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:3]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", prefix + "file.siem"), 'w') as outfile:
# go through all files and merge it into outfile
#for filename in files:
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")
此版本只将一个文件的内容写入合并文件
您每次读取文件时都在写入一个新文件,您需要改为追加。您还有一个不必要的嵌套 for 循环来读取文件,而您可以在外循环中读取它们。这应该有效:
import os
# get all files in folder
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:2]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", "merged" + "_" + prefix + ".txt"), 'a') as outfile:
# go through all files and merge it into outfile
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")
Python 2.7
我有多个文件:
文件A_01.txt文件内容:aaaa
文件A_02.txt文件内容:bbbb
文件B_01.txt文件内容:aaaB
文件B_02.txt文件内容:bbbB
文件D_01.txt文件内容内容:aaaD
文件D_02.txt文件内容内容:bbbD
我需要根据文件前缀创建 "merged" 文件,
对于以 A_0 开头的文件,创建合并文件 merged_A.txt 并将所有以 A_0、
开头的文件的内容放在那里merged_B.txt 对于以 B_
开头的文件所有文件都一样
# get all files in folder
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:3]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", "merged" + "_" + prefix + ".txt"), 'w') as outfile:
# go through all files and merge it into outfile
for file in files:
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")
以上代码,生成合并文件,但是,两个合并文件都包含所有文件的内容
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:3]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", prefix + "file.siem"), 'w') as outfile:
# go through all files and merge it into outfile
#for filename in files:
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")
此版本只将一个文件的内容写入合并文件
您每次读取文件时都在写入一个新文件,您需要改为追加。您还有一个不必要的嵌套 for 循环来读取文件,而您可以在外循环中读取它们。这应该有效:
import os
# get all files in folder
files = os.listdir("C:\MTA\mta")
for filename in files:
#get prefix
prefix = filename[0:2]
# open destination file to merge individual files into
with open(os.path.join("C:\MTA\mta", "merged" + "_" + prefix + ".txt"), 'a') as outfile:
# go through all files and merge it into outfile
with open(os.path.join("C:\MTA\mta", filename)) as infile:
outfile.write(infile.read())
outfile.write("--------------\n")