如何使用 python 命令行将多个文件(.nii 格式)作为输入文件传递?
How to pass multiple files(.nii format) as input file using python command line?
我有一个包含 20 个 .nii 文件的文件夹。需要将其转换为 png,因此使用 python nii2png.py 相同。 nii2png.py This is the file I am making changes in. Here are 2 files for your reference: 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)
请忽略函数的缩进。
可能更好的计划是为输出文件夹设置一个 -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:])
您可以使用 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()
我有一个包含 20 个 .nii 文件的文件夹。需要将其转换为 png,因此使用 python nii2png.py 相同。 nii2png.py This is the file I am making changes in. Here are 2 files for your reference: 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)
请忽略函数的缩进。
可能更好的计划是为输出文件夹设置一个 -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:])
您可以使用 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()