2013-11-22 4 views
0

Мне нужно создать итоговый файл из большой части txt-файлов из разных папок. Я начал делать это с помощью python, но любое предоставленное решение прекрасное, т.е. питон, AWK, БашОбъединить файл результатов из нескольких txt-файлов

find = "find -name \"summary.txt\" > output.txt" 
os.system(find) 

o = open("output.txt", "r") 
read = o.readlines() 
for items in read: 
    pilko = items.split("/") 
    id = pilko[1] 

мне нужно искать сводные-файлы из подпапок и обобщать результаты TXT-файл в файл результатов. Я как бы застрял здесь, как открыть txt-файл в цикле, сохранить данные в файл результатов и продолжить.

plate = pilko[4] 
print id+"/"+pilko[2]+"/"+pilko[3]+"/"+plate+"/"+pilko[5] 
foo = open("id+"/"+pilko[2]+"/"+pilko[3]+"/"+plate+"/"+pilko[5]", "r") 

То есть подход, который я пытался, но все не удается там :)

я мог себе представить, есть более простые способы сделать это, что я еще не слышал.

+1

'id' - встроенный метод. никогда не используйте его как переменную – Farhadix

+0

, размещайте некоторый ввод проб и ожидаемый результат. –

ответ

0
for f in `find -name 'summary.txt' -print` ; do cat $f >> /tmp/grandsummary.txt ; done 
+1

Могло пойти еще проще: 'cat $ (find. -name 'summary.txt')> grandsummary.txt'. Если слишком много аргументов, 'find. -name 'summary.txt' -print0 | xargs -0 cat> grandsummary.txt'. Или с рекурсивным рывком, 'cat **/summary.txt> grandsummary.txt' – xmo

0

Если вы посмотрите на окраску кода, ваше цитирование неверно в последней строке. Кроме того, вы, вероятно, должны использовать API-интерфейсы os.path для своих вещей. И with на всякий случай, чтобы файл был правильно закрыт. Наконец, нет необходимости в readline, файл является итерируемым строками. Наконец, почему вы перекомпоновали свой путь вручную? Почему бы не просто open(items, 'rb')?

0

Вот питон решение:

import os 
with open('/path/to/result/file.txt', 'wb') as result_file: 
    for root, dirs, files in os.walk('/path/to/start/directory'): # walk the file system 
     if 'file_name_I_want.txt' in files: # This folder has the file i'm looking for! 
      with open(os.path.join(root, 'file_name_I_want.txt'), 'rb') as src_file: # open it up 
       result_file.write(src_file.read()) # Read from src, store in dest. 

Это было написано из памяти, так что может понадобиться перетасовывают.

Смежные вопросы