Просто используйте grep
:
import subprocess
def search_file(filename):
words = ['one', 'two', 'three']
command = f'grep -n {filename} -e ' + ' -e '.join(words)
# command = 'grep -n {filename} -e one -e two -e three'
return subprocess.check_output(command, shell=True).decode()
Флаг -n
указывает grep передавать номер строки своего совпадает, а флаг -e
сообщает ему, какие шаблоны следует искать.
Вы даже можете сканировать весь каталог, используя флаг -r
:
import subprocess
def search_dir(directory):
words = ['one', 'two', 'three']
command = f'grep -n -r {directory} -e ' + ' -e '.join(words)
return subprocess.check_output(command, shell=True).decode()
Работает только в unix средах. Если вы используете Windows, вам нужно будет использовать findstr
.