Команда Grep не находит слово при разделении файла в Python - PullRequest
0 голосов
/ 31 октября 2018

Я использую подпроцесс модуля для вызова команды grep, где я хочу узнать, в какой строке находится слово, вставленное пользователем, и в каком файле.

Для этого я использую параллельный поиск, где создаются потоки. Количество потоков определяется пользователем, если количество потоков больше, чем количество файлов, они делятся. Таким образом, каждый поток будет читать новые созданные файлы с одинаковым размером.

В первых нескольких файлах слово встречается, но не в каждом файле, хотя некоторые из них содержат одно и то же слово.

Выход

import subprocess
import threading

(...)

def t_function(args):
    """
    Uses the grep system command using a parallel search for a word inserted by the user in multiple files.
    Requires: args list, with all the files from the user input.
    Ensures: Number of lines in which the word is found as well as its file.
    """
    global contadorFiles
    contadorFiles+=1  
    out = subprocess.Popen(['grep', '-nr', text, args], stdout=subprocess.PIPE)

    otp = []

    for line in out.stdout: 
            print(line)
            otp.append(line.decode("utf-8").split(":"))

    if otp == []:
            print("Not found in "+args, threading.currentThread().getName())

    for i in range(len(otp)):
            finalN = otp[i][0]
            print('"' + text + '"' + " Found on line " + finalN + " in file " + args, threading.currentThread().getName()) 
...