Вы на 100% уверены, что datdsade действительно пишет в stderr? Если это так, то, возможно, он буферизует свой stderr или блокирует его.
РЕДАКТИРОВАТЬ: Я бы предложил запустить 'datdsade' (вашу программу) в bash (при условии, что у вас есть linux, вы можете использовать dl sh.exe для Windows) и посмотреть, сможете ли вы записать свой stderr в файл datdsade 2> ошибки. текст. Помните, что , если вы используете Windows, stderr не будет выводить в окне DOS . Возможно, вам больше повезет: сначала вы записываете в файл журнала и читаете его обратно, либо Python сохраняет его в переменной.
В качестве альтернативы stderr = sub.STDOUT объединит ваши ошибки со стандартным выводом.
ВНОВЬ РЕДАКТИРОВАТЬ: Игнорируйте вышеизложенное, так как Communication () захватывает все это. Я бы сказал, что проблема определенно в том, что выбранная вами программа никогда не пишет в stderr или вы фактически не вызываете ошибку. Это просто способ, которым была написана программа. Что такое программа?