Разбор списка строк с использованием argparser с подпроцессом - PullRequest
0 голосов
/ 30 мая 2019

Я написал скрипт, который делает некоторые вычисления и получает входные параметры, используя 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.

...