2013-03-23 3 views
0

Я пытаюсь запустить несколько текстовых файлов из папки на моем рабочем столе, из которой я должен искать слово olympic, и если он найдет olympic в этих 50 текстовых файлах, то он должен сохранить его на выходе. .txt, как textfile1 = 2 textfile2 = 1 и так далее дО texfile = 50Как запустить несколько файлов с помощью python

import glob 
import re 
write_file = open("output.txt") 
flist = glob.glob("./*.py") # adjust glob pattern as desired 
print flist 
print " lines : path to file" 
for fpath in flist: 
    with open(fpath) as f: #open files 
     lines = f.readlines() 
     if (lines == 'olympic'): 
      write_file.write("%s" % lines) #write the results 
     print "%6d : %s" % (len(lines),fpath) 
     #with open securely opens and closes the file 
write_file.close() # close file 

Это то, что я пытаюсь сделать, но да я знаю его полна ошибок :)

я пытаясь запустить несколько файлов, но не вручную, я хочу, чтобы он автоматически запускал файлы всей директории/папки и сохранял их вывод в одном текстовом файле. 'I have 50 text files and all files have word olympic , some have 1 some have 2/3 etc , i want to count the words from each text file and than save their output in one text file , like textfile1 = 2 , textfile2 = 3 etc in output.txt

+0

В чем ваш вопрос? – enginefree

+0

@enginefree i edit it – 2013-03-23 17:01:53

+0

Вы хотите получить номера строк, содержимое этих строк или всего содержимого файла, имеющего в нем «олимпийский»? ваш вопрос слишком неоднозначен. – kirpit

ответ

0

Попробуйте

import os 
import re 

filelist = [file for file in os.listdir('.') if '.py' in file] 

for file in filelist: 
    f = open(file,"r") 
    lines = f.readlines() 
    sum=0 
    sum1=0 
    for line in lines: 
     if "olympics" in line: 
     len(re.findall('\Wolympics\W', line)) 
     sum=sum+1 
     print sum 
     elif "Olympics" in line: 
     sum1=sum1+1 
     print sum1 
    print "%6d : %s" % (len(line),file.name) 
    f.close() 

Не совсем уверен, что вы пытаетесь сделать, но я дал ему шанс ...

+0

Надеюсь, теперь вы понимаете мою вопрос лучше, я его редактирую – 2013-03-23 18:10:42

0

что-то вроде этого:

выборки. py

#! /usr/bin/env python 
import os 
import sys 


def get_counts(filepath, niddle): 
    with open(filepath, 'rb') as f: 
     return f.read().count(niddle) 


if __name__ == '__main__': 
    folder = sys.argv[1] 
    niddle = sys.argv[2] 
    assert os.path.isdir(folder), "Not a folder" 
    output = open('results.txt', 'w') 
    for dirpath, dirnames, filenames in os.walk(folder): 
     for filename in filenames: 
      if not filename.endswith('.html'): # or whatever 
       continue 
      filepath = os.path.abspath('%s/%s' % (dirpath, filename)) 
      result = '%s = %d' % (filepath, get_counts(filepath, niddle)) 
      output.write(result) 
    output.close() 

использование как:

$ python fetch.py /path/to/search olimpic

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