def check_call_modify(command, modifier_function, output_file)
p = subprocess.Popen(command, stdout=subprocess.PIPE)
for line in p.stdout:
line = modifier_function(line)
output_file.write(line)
p.wait()
if p.returncode:
raise subprocess.CalledProcessError(p.returncode, command)
return p.returncode
, чтобы использовать его, передайте функцию для изменения каждой строки и файла.Приведенный ниже тупой пример сохранит результат ls -l
в верхнем регистре в listupper.txt
:
with open('listupper.txt', 'w') as f:
check_call_modify(['ls', '-l'], operator.methodcaller('upper'), f)