subprocess.run
выдает ошибку FileNotFoundError и не возвращает ничего, если не может найти команду, которую вы пытаетесь использовать. 'lsdkdfk' не является допустимой командой, и поэтому result
никогда ничего не назначается, и нет stderr для просмотра. Однако вы можете распечатать перехваченное исключение, если хотите.
Если команда найдет команду, но сама команда не выполнится, исключение не будет выдано, если вы не укажете аргумент check=True
. Теперь вы также можете просматривать stderr.
>>> try:
... result = subprocess.run(["ls", "asdf"], capture_output=True, encoding="utf-8")
... except FileNotFoundError as e:
... print("I caught this: ", e)
...
>>> result.stdout
''
>>> result.stderr
"ls: cannot access 'asdf': No such file or directory\n"
>>> try:
... result = subprocess.run(["invalidcmd", "asdf"], capture_output=True, encoding="utf-8")
... except FileNotFoundError as e:
... print("I caught this: ", e)
...
I caught this: [Errno 2] No such file or directory: 'invalidcmd'