Какова максимальная длина подпроцесса. Откройте параметр args?

я используюPopen Функция из модуля подпроцесса для запуска инструмента командной строки:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

Инструмент, который я использую, берет список файлов, которые он затем обрабатывает. В некоторых случаях этот список файлов может быть очень длинным. Есть ли способ найти максимальную длину параметра args? С большим количеством файлов, передаваемых в инструмент, я получаю следующую ошибку:

Traceback (most recent call last):
  File "dump_output_sopuids.py", line 68, in <module>
    uid_map = create_sopuid_to_path_dict_dcmdump(dicom_files)
  File "dump_output_sopuids.py", line 41, in create_sopuid_to_path_dict_dcmdump
    dcmdump_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
  File "c:\python26\lib\subprocess.py", line 621, in __init__
    errread, errwrite)
  File "c:\python26\lib\subprocess.py", line 830, in _execute_child
    startupinfo)
WindowsError: [Error 206] The filename or extension is too long

Есть ли общий способ найти эту максимальную длину? Я нашел следующую статью на MSDN:Ограничение строки командной строки командной строки (Cmd. Exe) но я не хочу жестко кодировать значение. Я бы предпочел получить значение во время выполнения, чтобы разбить команду на несколько вызовов.

Я использую Python 2.6 на Windows XP 64.

Редактировать: добавление примера кода

paths = ['file1.dat','file2.dat',...,'fileX.dat']
cmd = ['process_file.exe','+p'] + paths
cmd_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]

Проблема возникает потому, что каждая фактическая запись вpaths Список, как правило, очень длинный путь к файлу И их несколько тысяч.

Я не против разбить команду на несколько вызововprocess_file.exe, Я ищу общий способ получения максимальной длины аргументов, поэтому я знаю, сколько путей нужно отправить для каждого прогона.

Ответы на вопрос(2)

Ваш ответ на вопрос