Я делаю for in range(...):
, и мне нужно заменить i
в вызове подпроцесса. Я пытался сделать это так:
myStr = "'(insert \"%g\")'" %i
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
eval("myStr"), "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()
и вот так:
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
"'(insert \"%g\")'" %i, "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()
а также вот так:
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
("'(insert \"%g\")'" %i), "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()
Но ничего из этого не работает. Можете ли вы помочь мне сделать это хорошо?
Также - это правда - что когда system("bash command")
не wait
?
Редактировать
Это сценарий для запуска компьютерного моделирования для различных значений данного параметра. Он копирует каталог baseData для каждого прогона, идет туда, изменяет файл параметров (вставляет значение), затем он должен запустить симуляцию и вернуться назад.
Это не приводит к ошибке - но также не вставляет значение i
в md.mdp
:
myStr = "'(insert \"%g\")'" %i
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
myStr, "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()
ни это не помогает:
myStr = "'(insert \\\"%g\\\")'" %i
Следующие варианты также не вставляют вещь:
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
"'(insert \"%g\")'" %i, "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()
subprocess.Popen(["emacs", "--batch", "+83:28", "md.mdp", "--eval",
("'(insert \"%g\")'" %i), "-f", "save-buffer", "--kill"],
stdout=subprocess.PIPE).wait()