Ошибка выходного значения в сценарии оболочки Python - PullRequest
0 голосов
/ 11 июля 2020

У меня есть программа Python, в которой я использовал сценарий оболочки, который возвращает выходное значение. Ниже мой код:

#!/usr/bin/env python3
import subprocess
import os
import sys

filename=input("Enter the filename:")
val=subprocess.check_output(['bash','./grep.sh',filename])
print(val)

grep. sh код:

file=$1
grep -c "^[0-9]" $file

Мой вывод:

Enter the filename:lg.txt
b'4\n'

Как видите, он печатает результат как b'4\n' вместо того, чтобы печатать только значение 4

Что не так с моим кодом? Как исправить эту ошибку?

1 Ответ

1 голос
/ 11 июля 2020

В вашем коде нет ничего неправильного

  • префикс b предназначен для байтов, чтобы получить строгое значение с терминала
  • \n просто потому, что это то, что вернулось в th терминал, это новая строка в конце

Независимо от команды, вы должны сделать это при получении команды frmo

val = subprocess.check_output(['bash','./grep.sh',filename])
result = val.decode('utf-8').rstrip() # decode in UTF-8 then remove newline char
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...