Advertisement
Woobinda

Модуль subprocess

Sep 20th, 2016
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.29 KB | None | 0 0
  1. """
  2. Запускается parent.py. Child.py выступает в роли аргумента command, который передается в запускаемый процесс. У этого процесса есть стандартный вход, куда мы передаем два аргумента – поисковое слово и имя файла. Мы запустим два экземпляра программы child.py, каждый экземпляр будет искать слово word в своем файле – это будут файлы исходников самих программ.
  3. """
  4.  
  5. """
  6. parent.py
  7. """
  8.  
  9. import os
  10. import subprocess
  11. import sys
  12.  
  13. child = os.path.abspath('child.py')                 #путь к запускаемому файлу
  14. word = 'wordcount'                                  #слово которое будем искать и передвавать child(ам) через pipe
  15. file = ['parent.py', 'child.py']                    #файлы, в каждом из котороых будут искать child(ы)
  16.  
  17. pipes = []
  18. for i in range(0, len(file)):
  19.     command = [sys.executable, child]                          
  20.     pipe = subprocess.Popen(command, stdin=subprocess.PIPE)     #создание процесса
  21.     pipes.append(pipe)
  22.     pipe.stdin.write(word.encode("utf8") + b"\n")               #передаем через pipe шаблон word для child(ов)
  23.     pipe.stdin.write(file[i].encode("utf8") + b"\n")            #пишем через pipe имя файла в которых будем искать word
  24.     pipe.stdin.close()                                         
  25.  
  26. while pipes:
  27.     pipe = pipes.pop()                                          #запускаем процессы
  28.     pipe.wait()
  29.  
  30.  
  31. """
  32. child.py
  33. """
  34.  
  35. import sys
  36.  
  37. word = sys.stdin.readline().strip()                             #получаем поисковое слово с консоли
  38. filename = sys.stdin.readline().strip()                         #получаем имя файла в котором надо производить поиск
  39.  
  40. try:
  41.     with open(filename, 'r') as file:                           #открываем файл
  42.         while True:                            
  43.             current = file.read()                               #читаем файл
  44.             if not current:
  45.                 break                              
  46.             if (word in current):                              
  47.                 print("find: {0} {1}".format(filename, word))   #если слово word в файле, форматируем и выводим результат
  48. except:
  49.     pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement