在python中将两个源文件复制到一个目标

时间:2013-11-15 05:51:21

标签: python shutil

你们对我的上一个问题非常有帮助,所以我想我能不能再帮助我了。现在,我有一堆名为P2 _ ##的文件夹,每个文件夹包含两个文件夹0_output和1_output。在每个输出文件夹中,我有一个名为Bright_Combo.txt的文件。我想要做的是将两个输出文件夹中的数据复制到P2 _ ##文件夹中的Bright_Sum.txt文件中。这是我到目前为止所获得的代码,但问题是它只复制1_output文件夹中的数据,并在一种情况下将Bright_Sum文件的空副本保存到0_output文件夹中。

import os
import re
import shutil


def test():
    file_paths = []
    filenames = []
    for root, dirs, files in os.walk("/Users/Bashe/Desktop/121210 p2"):
        for file in files:
            if re.match("Bright_Combo.txt",file):
                file_paths.append(root)
                filenames.append(file)
    return file_paths, filenames

def test2(file_paths, filenames):
    for file_path, filename in zip(file_paths, filenames):
        moving(file_path, filename)

def moving(root,file):
    bcombo = open(os.path.join(root,os.pardir, "Bright_Sum.txt"),'w')
    shutil.copy(os.path.join(root,"Bright_Combo.txt"), os.path.join(root, os.pardir,   "Bright_sum.txt"))

file_paths, filenames = test()
test2(file_paths, filenames)

感谢大家的帮助=)

2 个答案:

答案 0 :(得分:0)

嗯,我不能给你完整的解决方案,但我可以给你一个想法...
这就是我为你的用例实现的:

<强>码

import os,re,shutil
f=[]
file='Bright_Combo.txt'
for root,dirs,files in os.walk('/home/ghantasa/test'):
    if file in files:
        f.append(os.path.join(root,file))

for fil in f:
    with open(fil,'r') as readfile:
        data = readfile.readlines()
    with open(os.path.join('/'.join(fil.split('/')[:-2]),'Bright_Sum.txt'),'a') as      writefile:
    writefile.write(''.join(data))  

这对我有用,我希望你能根据自己的需要进行调整。

希望这会有所帮助.. :)

答案 1 :(得分:0)

如果您只想将第二个文件附加到第一个文件,则可以直接使用bash。我的代码假设P2_##文件夹位于root目录。

root="/Users/Bashe/Desktop/121210 p2/"
for folder in $(ls -1 "$root/P2_*"); do
    cp "$folder/0_output/Bright Combo.txt" "$folder/Bright Sum.txt"
    cat "$folder/1_output/Bright Combo.txt" >> "$folder/Bright Sum.txt"
done