AttributeError с запуском подпроцесса python - PullRequest
0 голосов
/ 14 ноября 2018

Python 3.7.1 64-битная в Windows 7 64-битная

test.py

import subprocess
subprocess.run(['ping localhost'], shell=True)

выход

C:\>python test.py
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    subprocess.run(['ping localhost'], shell=True, check=True)
  File "C:\Program Files\Python37\lib\site-packages\run\__init__.py", line 145, in __new__
    process = cls.create_process(command, stdin, cwd=cwd, env=env, shell=shell)
  File "C:\Program Files\Python37\lib\site-packages\run\__init__.py", line 121, in create_process
    shlex.split(command),
  File "C:\Program Files\Python37\lib\shlex.py", line 305, in split
    return list(lex)
  File "C:\Program Files\Python37\lib\shlex.py", line 295, in __next__
    token = self.get_token()
  File "C:\Program Files\Python37\lib\shlex.py", line 105, in get_token
    raw = self.read_token()
  File "C:\Program Files\Python37\lib\shlex.py", line 136, in read_token
    nextchar = self.instream.read(1)
AttributeError: 'list' object has no attribute 'read'

Почему я получаю эту ошибку и как ее исправить?

Это относится не только к команде ping, но и к любой тривиальной команде, например, "dir"

1 Ответ

0 голосов
/ 14 ноября 2018

После долгих попыток и потянув за волосы, я заработал.

Вместо этого должно быть

subprocess.run('ping localhost', shell=True) #Remove the square brackets
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...