使用python将文件内容合并到一个文件中

时间:2019-04-03 09:15:56

标签: python

我在目录'C:/Users/lamda/Desktop/ML working/logs/a/'中有多个子目录,每个子目录包含一堆文件。我的目标是将所有这些文件连接到一个文件'C:/Users/lamda/Desktop/ML working/logs/concatenate.log'中 我已经编写了以下python代码,但仅成功复制了'C:/Users/lamda/Desktop/ML working/logs/concatenate.log'中的一个文件内容。我怀疑是否缺少for循环,但无法真正找出问题所在。请帮助我

import glob
import os.path
directories = os.listdir('C:/Users/lamda/Desktop/ML working/logs/a')
for i in directories:
    files = os.listdir('C:/Users/lamda/Desktop/ML working/logs/a/' + i)
    print(files[1:])
    files2 = files[1:]
    for j in files2 :       
        fs = open('C:/Users/lamda/Desktop/ML working/logs/a/'+i+'/'+j,'r')
        fd = open('C:/Users/lamda/Desktop/ML working/logs/concatenate.log','w')
        #print(i)
        #print(j)
        for ligne in fs :
            fd.write(ligne)
fd.close()
fs.close()

2 个答案:

答案 0 :(得分:2)

这是因为open(path, 'w')文件被截断了。您要么只需要打开一次目标文件,然后在循环遍历源文件的所有迭代中使用类似文件的对象,否则就必须以追加模式open(path, 'a')打开文件。

有关详细信息,请参见https://docs.python.org/2/library/functions.html#open

答案 1 :(得分:0)

类似的事情会起作用。

OF = open("out.txt", 'w+')
for path, dirlist, name in os.walk(path):
    fpath = (os.path.join(path, n) for n in name)
    try:
        for file in fpath:
            with open(file, "r") as f:
                for line in f:
                    OF.write(line)
    except Exception as e:
        print(e)