Есть ли способ в Python, чтобы сказать, является ли переменная системной командой - PullRequest
1 голос
/ 12 июля 2019

Я делаю эмулятор оболочки на python, однако я хочу, чтобы пользовательский ввод сохранялся в переменной с именем x, и если это системная команда

Я попытался получить список всехКоманда их была, однако это было слишком много времени

import os
while True:
  execute = input(">")
  os.system(execute)

1 Ответ

0 голосов
/ 12 июля 2019

Если у вас уже есть список команд, вы можете сделать что-то вроде этого:

>>> from subprocess import Popen, PIPE
>>> 
>>> 
>>> def get_stderr(cmd):
...     return Popen(cmd, shell=True, stderr=PIPE).communicate()[1]
... 
>>> 
>>> for c in ['garbage_cmd1', 'grep', 'which', 'garbage_cmd2']:
...     if 'not found' in get_stderr(c).decode():
...         print('%s is not valid' % c)
...     else:
...         print('%s is valid' % c)
... 
garbage_cmd1 is not valid
grep is valid
which is valid
garbage_cmd2 is not valid

Если вы работаете на Linux-машине, вы также можете запустить compgen -c >> cmds.txt

...