Как вызвать команду командной строки (команда AFNI)?
Я пытаюсь прочитать тег заголовка dicom в файле dicom. Теперь есть два способа прочитать этот тег заголовка dicom.
1) Использование пакета pydicom в python, который, по-видимому, не очень хорошо работает на моей установленной версии python (python 3).
2) или когда я вызываю функцию AFNI 'dicom_hinfo' через командную строку, я могу получить значение тега dicom. Синтаксис для вызова функции afni в терминале выглядит следующим образом:
dicom_hinfo -tag aaaa, bbbb filename.dcm вывод:fgre
Теперь, как я должен назвать это dicom-info -tag aaaa, bbbb filename.dcm в скрипте Python. Я думаю, подпроцесс может работать, но не уверен, как его использовать в этом случае.
2 ответа
Чтобы получить вывод из подпроцесса, вы можете использовать check_output()
функция:
#!/usr/bin/env python
from subprocess import check_output
tag = check_output('dicom_hinfo -tag aaaa,bbbb filename.dcm output:fgre'.split(),
universal_newlines=True).strip()
universal_newlines=True
используется для получения текста Unicode на Python 3 (данные декодируются с использованием кодировки символов пользовательской локали).
check_output()
предполагает, что dicom_hinfo
печатает в стандартный поток вывода (stdout). Некоторые утилиты могут печатать напрямую в stderr или терминал. Код может быть изменен, чтобы приспособиться к этому.
О, это было связано с синтаксической ошибкой при использовании Pydicom. Я хотел получить доступ к тегу 0019, 109c.
Синтаксис должен быть:
DS [0x0019,0x109c].value.
не ds[aaaa,bbbb].value