Эта команда выполняется:
process_1 = subprocess.Popen("gzip -dc " + infile + " > " + inter_file,
cwd = base_dir,
stdout = subprocess.PIPE,
shell = True,
universal_newlines = True)
output, error = process_1.communicate()
Теперь я хочу удалить shell=True
(у меня много строк, подобных приведенным выше, и я подозреваю, что Shell = True
вызывает утечку памяти):
process_1 = subprocess.Popen(["gzip", "-dc", infile, ">", inter_file],
cwd = base_dir,
stdout = subprocess.PIPE,
shell = False,
universal_newlines = True)
output, error = process_1.communicate()
выход:
gzip: > .gz: No such file or directory
gzip: blabla.txt: not in gzip format
, но blabla.txt
равен inter_file
: кажется, что установка Shell = False
путает infile
и inter_file
.Как исправить?
PS общий ответ приветствуется.У меня есть 50 нечетных системных вызовов, как указано выше, которые мне нужно переформатировать для запуска в режиме Shell = False
.