如何调用命令行命令(AFNI命令)?

How to call command line command (AFNI command)?

我正在尝试读取 dicom 文件中的 dicom header 标签。 现在,有两种方法可以读取此 dicom header 标签。

1) 在 python 中使用 pydicom 包,这显然在我的 python 安装版本上运行不佳 (python 3).

2) 或者当我通过命令行调用 AFNI 函数 'dicom_hinfo' 时,我可以获得 dicom 标签值。在终端调用afni函数的语法如下:

dicom_hinfo -标签 aaaa,bbbb filename.dcm output:fgre

现在我应该如何在 python 脚本中调用此 dicom-info -tag aaaa,bbbb filename.dcm。 我想 subprocess 可能会起作用,但不确定在这种情况下如何使用它。

要从子进程中获取输出,您可以use check_output() function:

#!/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 用于在 Python 3 上获取 Unicode 文本(数据使用用户区域设置的字符编码进行解码)。

check_output() 假设 dicom_hinfo 打印到它的标准输出流 (stdout)。一些实用程序可能会直接打印到 stderr 或终端。可以修改代码以适应这种情况。

哦,这是由于使用 Pydicom 时出现语法错误。 我想访问 0019, 109c 标签。

语法应为:

ds[0x0019,0x109c].值。

不是 ds[aaaa,bbbb].value