Я написал скрипт, который делает некоторые вычисления и получает входные параметры, используя argparse
.
Одним из этих параметров является список путей к файлам.
Оглядываясь вокруг, я нашел другой вопрос , и я изменил свой код, добавив:
import argparse
parser = argparse.ArgumentParser(description='Engine')
parser.add_argument('--outputFile', required=True, help='Output file path [str]')
parser.add_argument('--filesList', nargs='+', required=True, help='List of the input files [list of str]')
args = parser.parse_args()
outputFileName = args.outputFile
inputFilesName = args.filesList
Таким образом, я могу передать все входные параметры, даже список файлов, каждый из которых печатается через пробел, например:
--outputFile output.nc
--filesList data/file1.nc data/file2.nc
Теперь я создал GUI для своего скрипта и вызываю скрипт, используя subprocess
:
command = [sys.executable,
'D:/Projects/Calculation/src/modules/Engine.py',
'--outputFile', self.outputFileName,
'--filesList', filesPathList]
p = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=0)
где filesPathList
- путь к списку файлов: ['data/file1.nc', 'data/file2.nc']
Проблема в том, что если я запустил программное обеспечение таким образом, то, как понимает движок, это список из 1 элемента: ['data/file1.ncdata/file2.nc']
, по существу arcparse
объединяет все пути.
Можно ли добавить add_argument
, чтобы исправить это?
Я мог бы изменить способ разбора входных параметров, но я хотел бы знать, есть ли способ с использованием argparse
.