У меня есть некоторый код, как это:Запуск Grep через Python - не работает
f = open("words.txt", "w")
subprocess.call(["grep", p, "/usr/share/dict/words"], stdout=f)
f.close()
Я хочу Grep словарь MacOs для определенного шаблона и записать результаты в words.txt
. Например, если я хочу сделать что-то вроде grep '\<a.\>' /usr/share/dict/words
, я бы запустил вышеуказанный код с p = "'\<a.\>'"
. Однако вызов подпроцесса не работает должным образом, и words.txt
остается пустым. Любые мысли о том, почему это так? Кроме того, существует ли способ применить регулярное выражение к /usr/share/dict/words
без вызова grep-subprocess?
редактировать: Когда я бегу grep '\<a.\>' /usr/share/dict/words
в моем терминале, я получаю такие слова, как: аа объявления ае ах Ai ак аль утра ар в в аш топора ау, как выводит терминал (или файл, если я перенаправляю их там). Это то, что я ожидаю после words.txt
после запуска вызова подпроцесса.
Пожалуйста, предоставьте хотя бы один матч, который вы ожидаете. До сих пор я полагаю, что вы можете безопасно удалить символы '' 'и' \ ' из вашего шаблона. Вам не нужно скрывать символы, потому что вы не используете оболочку прямо сейчас. Ваш текущий вызов должен работать с дополнительным аргументом 'shell = True' – woockashek
@woockashek добавил пример соответствия –