Subprocess.call() не выбрасывает ошибку, когда файл не найден
Я пытаюсь запустить скрипт на python из веб-сервиса Django и использую метод subprocess.call() и поместил его в блок try except, потому что мне нужно получить ошибку, когда что-то не так. Я обнаружил, что когда путь к скрипту недействителен, ошибка не возникает, а только выводится на консоль, но мне нужно, чтобы она возникала, чтобы я мог поймать ее в блоке except.
Вот мой код.
try:
row = exec_SQL(f"SELECT [ID], [ProjectPath], [MainFileName] FROM [dbo].[WebserviceInfo] WHERE ProjectName='{project}'")
command = f'python {row[1]}\{row[2]} {model} {scenario}'
subprocess.call(command, shell=True)
except Exception as e:
error_message = str(e)
Это путь к файлу + некоторые аргументы, которые мне нужны.
f'python {row[1]}\{row[2]} {model} {scenario}
Заранее спасибо за помощь.
Вы можете проверить, существует ли файл, прежде чем пытаться выполнить скрипт. Если такой файл не существует, вы можете сами поднять исключение.
Что-то вроде:
import os.path
if not os.path.isfile('script.py'):
raise Exception('File not found')