Как вызвать команду командной строки (команда 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

Другие вопросы по тегам