Vraag combineer meerdere tekstbestanden in één tekstbestand met behulp van python [duplicate]


Deze vraag heeft hier al een antwoord:

stel dat we veel tekstbestanden hebben als volgt:

file1:

abc
def
ghi

file2:

ABC
DEF
GHI

bestand3:

adfafa

file4:

ewrtwe
rewrt
wer
wrwe

Hoe kunnen we een tekstbestand maken zoals hieronder:

resultaat:

abc
def
ghi
ABC
DEF
GHI
adfafa
ewrtwe
rewrt
wer
wrwe

Gerelateerde code kan zijn:

import csv
import glob
files = glob.glob('*.txt')
for file in files:
with open('result.txt', 'w') as result:
result.write(str(file)+'\n')

Na dit? Alle hulp?


15
2017-07-19 14:46


oorsprong


antwoorden:


U kunt de inhoud van elk bestand rechtstreeks in de schrijfmethode van de uitvoerbestands-handle lezen:

import glob

read_files = glob.glob("*.txt")

with open("result.txt", "wb") as outfile:
    for f in read_files:
        with open(f, "rb") as infile:
            outfile.write(infile.read())

38
2017-07-19 14:59



De fileinput module is perfect ontworpen voor deze use case.

import fileinput
import glob

file_list = glob.glob("*.txt")

with open('result.txt', 'w') as file:
    input_lines = fileinput.input(file_list)
    file.writelines(input_lines)

5
2017-07-19 15:01



Je zou zoiets kunnen proberen:

import glob
files = glob.glob( '*.txt' )

with open( 'result.txt', 'w' ) as result:
    for file_ in files:
        for line in open( file_, 'r' ):
            result.write( line )

Moet rechtdoor om te lezen.


4
2017-07-19 14:58



Het is ook mogelijk om bestanden te combineren door OS-opdrachten op te nemen. Voorbeeld:

import os
import subprocess
subprocess.call("cat *.csv > /path/outputs.csv")

0
2018-05-17 10:46



filenames = ['resultsone.txt', 'resultstwo.txt']
with open('resultsthree', 'w') as outfile:
    for fname in filenames:
        with open(fname) as infile:
            for line in infile:
                outfile.write(line)

-1
2018-06-04 16:20