Я не проверял ничего из этого, но вот несколько вариантов:
Мост Python-to-IDL / IDL-to-Python
Мост Python-IDL предоставляет способ запуска подпрограмм IDL внутри Python. Вы можете попробовать следующее
from idlpy import *
from scipy.io.idl import readsav
input = readsav('Original_file.inp')
**change parameter**
IDL.run("SAVE, /VARIABLES, FILENAME = 'New_file.sav'")
Существует также IDL к мосту Python , который может позволить вам выполнить желаемую операцию Python в IDL и пропустить всю загрузку и сохранение файлов ...
Чтение / запись JSON
Похоже, readsav()
просто возвращает словарь содержимого файла сохранения IDL. Я не уверен в содержимом вашего файла, поэтому не знаю, сработает ли это, но, возможно, вы могли бы просто написать его в виде строки JSON,
import json
from scipy.io.idl import readsav
input = readsav('Original_file.inp')
**change parameter**
with open('New_file.txt', 'w') as outfile:
json.dump(modified_input, outfile)
и затем прочитайте его обратно в IDL с помощью JSON_PARSE()
(документация здесь ).
Напишите свой собственный взломать
Если ничего не помогает, вы можете взглянуть на неофициальную спецификацию формата Крейга Марквардта
файла IDL "SAVE" и напишите некоторый пользовательский код для записи файла сохранения IDL непосредственно из Python. Если ничего другого, это было бы интересное упражнение.