【问题标题】:How to pass multiple files(.nii format) as input file using python command line?如何使用 python 命令行将多个文件(.nii 格式)作为输入文件传递?
【发布时间】:2021-07-15 19:56:26
【问题描述】:

我有一个包含 20 个 .nii 文件的文件夹。需要将其转换为 png,因此使用 python nii2png.py 相同。 nii2png.py 这是我要更改的文件。这里有 2 个文件供您参考:Here 这些是 2 个 .nii 文件。 它的语法如下:

!python nii2png.py -i <input file> -o <output folder>

如何在循环或其他解决方案中传递这 20 个 .nii 文件? 这是nii2png文件的开头:

import numpy, shutil, os, nibabel
import sys, getopt
import scipy.misc
import imageio
import argparse

def main(argv):
inputfile = ''
outputfile = ''

try:
    opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
    print('nii2png.py -i <inputfile> -o <outputfile>')
    sys.exit(2)
for opt, arg in opts:
    if opt == '-h':
        print('nii2png.py -i <inputfile> -o <outputfile>')
        sys.exit()
    elif opt in ("-i", "--input"):
        inputfile = arg
    elif opt in ("-o", "--output"):
        outputfile = arg

print('Input file is ', inputfile)
print('Output folder is ', outputfile)

请忽略函数的缩进。

【问题讨论】:

    标签: python parsing image-preprocessing medical-imaging


    【解决方案1】:

    可能更好的计划是为输出文件夹设置一个-o 参数,并将命令行的其余部分作为输入文件名,而不是使用单个-i 参数。现在您可以指定 nli2png.py -o xxx a*.png b*.png left/c*.png 之类的内容。

    import numpy, shutil, os, nibabel
    import sys
    import scipy.misc
    import imageio
    
    def main(argv):
        if not argv:
            print('nii2png.py -o <outputfolder> <input> <input>...')
            sys.exit()
    
        grab = 0
        outputfolder = '.'
        inputfiles = []
        for arg in argv:
            if arg == '-o':
                grab = 1
            elif grab:
                outputfolder = arg
                grab = 0
            else:
                inputfiles.append(arg)
    
        print('Input files are ', inputfiles)
        print('Output folder is ', outputfolder)
    
    main(sys.argv[1:])
    

    【讨论】:

    • 我确实了解您的思考过程,但此解决方案不起作用。我尝试在代码中放置一个循环,将每个输入文件转换为 png 格式,但它不接受输入文件。
    • 我已经添加了python文件的链接,你能建议修改一下吗?
    • 我的代码运行良好。 “不接受”是什么意思?什么错误,在哪一行?您必须准确,因为我没有任何这些图像用于测试。
    • 您应该更改代码以询问旋转并在该循环之外创建输出文件夹。
    • 是的,谢谢!!它起作用了。“您应该更改代码以询问旋转并在该循环之外创建输出文件夹” -> 会这样做。
    【解决方案2】:

    您可以使用 argparse。

    import argparse
    
    def main():
        parser = argparse.ArgumentParser(description='Convert files, syntax: nii2png.py -i <inputfile> -o <outputfile>')
        parser.add_argument('-i', '--inputfiles', nargs='+', help='Paths of input files.')
        parser.add_argument('-o', '--outputfolder', default='', help='Output folder.')
        args = parser.parse_args()
    
        print(f'Input files: {args.inputfiles}')
        print(f'Output folder: {args.outputfolder}')
        
            
    if __name__ == "__main__":
        main()
    

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 1970-01-01
      • 2018-04-04
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多