Python-基于文件前缀合并多个文件

问题描述 投票:1回答:1

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

我需要基于文件前缀创建“合并的”文件,

对于以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")

此版本仅将一个文件的内容写入合并的文件

python join concat
1个回答
2
投票

您每次读取文件时都在写一个新文件,您需要附加一个文件。您还可以使用不必要的嵌套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")
© www.soinside.com 2019 - 2024. All rights reserved.