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

时间:2015-02-16 02:00:19

标签: python subprocess dicom pydicom

我正在尝试在dicom文件中读取dicom标头标签。  现在,有两种方法可以读取这个dicom标头标签。

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

2)或当我打电话给AFNI功能' dicom_hinfo'通过命令行,我可以得到dicom标签值。在终端中调用afni函数的语法如下:

dicom_hinfo -tag aaaa,bbbb filename.dcm 输出:FGRE

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

2 个答案:

答案 0 :(得分:1)

要从子流程获取输出,您可以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或终端。可以修改代码以适应它。

答案 1 :(得分:0)

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

语法应为:

DS [0x0019,0x109c]。价值。

不是ds [aaaa,bbbb] .value