#python #bash #grep #subprocess
#python #bash #grep #подпроцесс
Вопрос:
Я хочу использовать подпроцесс для grep для строки, которая заканчивается обратной косой чертой:
product = "myProduct"
итак, в bash, если я сделаю:
zgrep -n 'myProduct\' file_of_products.txt.gz
это работает (я получаю кучу строк). Сейчас пытаюсь на python:
import subprocess
product = "myProduct\"
command = f"""zgrep -n "{product}" {filename}"""
return_code, output = subprocess.getstatusoutput(command)
Я получаю;
'/bin/sh: 1: Syntax error: Unterminated quoted string'
Комментарии:
1. попробуйте:
product = r"myProduct\"
2. Это тоже было мое предположение. Я сделал. Я получаю:
'/bin/grep: Trailing backslash'
(я должен был указать в вопросе)3. Вероятно, вам следует попробовать 4 обратных косых черты в Python.
` is the escape character,
` — это буквальная обратная косая черта. Вам нужно 2 в bash, поэтому 4 в Python.4. Затем попробуйте:
command = f"zgrep -n '{product}' '{filename}'"
5. @anubhava: работает идеально. Спасибо, сир. Не могли бы вы опубликовать это в качестве ответа?
Ответ №1:
Вы можете использовать этот переработанный код с необработанной строкой и одинарными кавычками:
import subprocess
product = r"myProduct\"
command = f"zgrep -n '{product}' '{filename}'"
return_code, output = subprocess.getstatusoutput(command)