subprocess

DEVNULL

subprocess.DEVNULL

PIPE

subprocess.PIPE

run()

subprocess.run(command_list, **kwargs)
  • check - булево, рейзить ошибку, если код возврата команды не 0

  • input

  • stderr - входной поток данных

  • stdin - выходной поток данных по ошибкам

  • stdout - выходной поток данных

  • text - булево, stdout, stdin вернут строки, а не байты

list_files = subprocess.run(['ls', '-l'])
list_files.returncode
# 0

subprocess.run(['ls', '-l', '-a', '-h'])
subprocess.run(['ls', '-l'], stdout=subprocess.DEVNULL)

cat = subprocess.run(['cat'], stdout=subprocess.PIPE, text=True, input='ilnurgi')
cat.stdout
# ilnurgi

subprocess.run(['bad_command'], check=True)
# Error

Popen()

class subprocess.Popen(command_list, **kwargs)
  • stderr - входной поток данных

  • stdin - выходной поток данных по ошибкам

  • stdout - выходной поток данных

  • text - булево, stdout, stdin вернут строки, а не байты

ls_cmd = Popen(['ls', '-l']
cat_cmd = Popen(
    ['cat'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True,
)
communicate(**kwargs)
  • input

output, errors = cat_cmd.communicate(input='ilnurgi')
poll()
cat_cmd.poll()
wait()
cat_cmd.wait()