Python - объединить несколько файлов на основе префикса файла - PullRequest
1 голос
/ 10 апреля 2020

Python 2.7

У меня есть несколько файлов:

файл A_01.txt filecontent: aaaa

file A_02.txt filecontent: 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")

Эта версия записывает только содержимое одного файла в объединенный файл

1 Ответ

2 голосов
/ 10 апреля 2020

Вы пишете новый файл каждый раз, когда читаете файл, вам нужно добавить вместо него. У вас также есть ненужная вложенная форма для -l oop для чтения файла, в то время как вы можете прочитать их во внешнем l oop. Это должно работать:

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")
...