#! /usr/bin/python3
# ==================================================================
# Use the subprocess module
#
# From: www.youtube.com/watch?v=2Fp1N6dofOY
# Calling External Commands Using the Subprocess Module
# ==================================================================
#
# Notes:
#
# a. capture_output was introduced in Python 3.7
# p1 = subprocess.run(['ls','-al'],capture_output=True,text=True)
#
# b. test=True introduced in Python 3.7
#
# c. decode() converts returned byte string b'.....' to text
#
# ==================================================================
import subprocess
from subprocess import PIPE
p1 = subprocess.run(['ls','-al'], stdout=PIPE, stderr=PIPE)
print(p1.stdout.decode())
##print(p1.stdout)
# ---- returned code
p2 = subprocess.run(['ls','-al','xyz'], stdout=PIPE, stderr=PIPE)
print('Returned code is {}'.format(p2.returncode))
print(p2.stderr.decode())
##print(p2.stderr)
# ---- redirect output to a file
with open('output.txt', 'w') as f:
p3 = subprocess.run(['ls'], stdout=f)
if p3.returncode == 0:
print('Output written to file')
else:
print('Write to file failed')
print(p3.stderr.decode())