Даже если использовать subprocess.Popen()
- это хорошая идея, это не решает проблему.
Ваша проблема не в пределе 255 символов , это было верно для DOS, позже увеличено до 2048 для Windows NT / 2000 и снова увеличено до 8192 для Windows XP +.
Реальное решение - обойти очень старую ошибку в Windows API: _popen () и _wpopen () .
Если вы когда-либо используете кавычки в командной строке, вам нужно добавить всю команду в кавычках, или вы получите сообщение об ошибке The input line is too long
.
Все операционные системы Microsoft, начиная с Windows XP, имели ограничение в 8192 символа, которого теперь достаточно для любого приличного использования командной строки, но они забыли устранить эту ошибку.
Чтобы преодолеть их ошибку , просто включите всю команду в двойные кавычки , и, если вы хотите узнать больше, комментарий MSDN к _popen () .
Будьте осторожны, потому что это работает:
prog
"prog"
""prog" param"
""prog" "param""
Но они не будут работать:
""prog param""
Если вам нужна функция, которая добавляет кавычки, когда они нужны, вы можете взять одну из http://github.com/ssbarnea/tendo/blob/master/tendo/tee.py