简体   繁体   中英

How to read multiple .txt files in a folder and write into a single file using python?

I am trying to read files with.txt extension and wanted to append into a single txt file. I could read data. But what is the best way to write into single.txt file?

Try this.

x.txt:

Python is fun

y.txt:

Hello World. Welcome to my code.

z.txt:

I know that python is popular.

Main Python file:

list_=['x.txt','y.txt','z.txt']
new_list_=[]
for i in list_:
    x=open(i,"r")
    re=x.read()
    new_list_.append(re)
with open('all.txt',"w") as file:
    for line in new_list_:
        file.write(line+"\n")
sources = ["list of paths to files you want to write from"]
dest = open("file.txt", "a")
for src in sources:
    source = open(src, "r")
    data = source.readlines()
    for d in data:
        dest.write(d)
    source.close()
dest.close()

If your destination doesnt already exist you can use "w"(write) mode instead of "a"(append) mode.

After you find the filenames, if you have a lot of files you should avoid string concatenation when merging file contents because in python string concatenation comes with O(n) runtime cost. I think the code below demonstrates the full example.

import glob

# get every txt files from the current directory
txt_files = glob.iglob('./*.txt')

def get_file_content(filename):
    content = ''
    with open(filename, 'r') as f:
        content = f.read()
    return content

contents = []
for txt_file in txt_files:
    contents.append(get_file_content(txt_file))

with open('complete_content.txt', 'w') as f:
    f.write(''.join(contents))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM