subprocess, returned non-zero exit status 1

Такой код:

import re
import subprocess
import random
pas = ''
for x in range(3): #Количество символов (3)
    pas = pas + random.choice(list('1234567890')) # Генерация случайного числа.
cmd = str(subprocess.check_output([f'ping', '-c {pas}', 'google.com'], text=True))
print(type(cmd)) # Печатает тип переменной
print(cmd)

Пишет ошибку:

ping: invalid argument: ' {pas}'
Traceback (most recent call last):
  File "/home/kali/test.py", line 13, in <module>
    cmd = str(subprocess.check_output([f'ping', '-c {pas}', 'google.com'], text=True))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ping', '-c {pas}', 'google.com']' returned non-zero exit status 1.

Кто может написать валидный код?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Обработайте ошибку чтобы увидеть опечатку:

import subprocess
import random


pas = random.randrange(1, 10)

try:
    output = subprocess.check_output(['ping', '-c', f'{pas}', 'google.com'], text=True)
except subprocess.CalledProcessError as e:
    print(repr(e))
    output = e.output

print(output)
$ python temp.py
PING google.com (173.194.222.101) 56(84) bytes of data.
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=1 ttl=108 time=4.54 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=2 ttl=108 time=4.62 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=3 ttl=108 time=4.63 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=4 ttl=108 time=4.61 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=5 ttl=108 time=4.59 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=6 ttl=108 time=4.64 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=7 ttl=108 time=4.62 ms
64 bytes from lo-in-f101.1e100.net (173.194.222.101): icmp_seq=8 ttl=108 time=4.59 ms

--- google.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7011ms
rtt min/avg/max/mdev = 4.549/4.610/4.646/0.044 ms
→ Ссылка