2

你们对我的最后一个问题非常有帮助,所以我想我会看看你是否能再次帮助我。现在,我有一堆名为 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)

感谢大家的帮助=)

4

2 回答 2

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

这对我有用,我希望您可以根据需要进行调整。

希望这可以帮助 .. :)

于 2013-11-15T06:26:46.617 回答
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
于 2013-11-15T06:46:03.280 回答