【问题标题】:How to call command line command (AFNI command)?如何调用命令行命令(AFNI 命令)?
【发布时间】:2015-02-16 02:00:19
【问题描述】:

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

1) 在 python 中使用 pydicom 包,这在我的 python 安装版本(python 3)上显然不能正常工作。

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

dicom_hinfo -tag aaaa,bbbb 文件名.dcm 输出:fgre

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

【问题讨论】:

    标签: python subprocess dicom pydicom


    【解决方案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 行,在 文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess. py", line 607, in check_output with Popen(*popenargs, stdout=PIPE, **kwargs) as process: File raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2] No such file or directory: 'dicom_hinfo'跨度>
    • @tryeverylanguage: update your question 并将完整的回溯放在那里(格式正确)。该错误表示PATH 中没有dicom_hinfo 命令。要么提供dicom_hinfo 的完整路径,要么将相应的目录添加到运行 Python 脚本的环境中的 PATH envvar。
    【解决方案2】:

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

    语法应该是:

    ds[0x0019,0x109c].值。

    不是 ds[aaaa,bbbb].value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多