Как сохранить набор данных Python (ранее экспортированный из IDL) обратно в формат IDL - PullRequest
1 голос
/ 14 июня 2019

У меня есть файл в IDL, я импортирую его в Python, используя readsav из scipy, я изменяю параметр в файле и хочу экспортировать / сохранить его обратно в исходный формат, читаемый IDL.

Вот как я импортирую это:

from scipy.io.idl import readsav
input = readsav('Original_file.inp')

1 Ответ

0 голосов
/ 18 июня 2019

Я не проверял ничего из этого, но вот несколько вариантов:

Мост 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. Если ничего другого, это было бы интересное упражнение.

...