Подпроцесс Python неправильно передает аргументыPython

Программы на Python
Anonymous
Подпроцесс Python неправильно передает аргументы

Сообщение Anonymous »

Похоже, что некоторые изменения в последних версиях Python привели к другому поведению того, как subprocess.run анализирует аргументы. Строка, которая работала годами, теперь перестала работать.
Теперь мой скрипт на Python обертывает LaTex Songs и lilypond для создания таблиц аккордов. После того, как у меня возникли проблемы с версиями Python и встроенным Python от Lilypond, я настроил все для чистого запуска. Возможно, проблема вовсе не в Python, а в Lilypond, однако я обратился в обычно очень отзывчивую службу поддержки Lilypond и не получил никакой помощи.
Итак, вот в чем проблема:
Итак, вот в чем проблема:
Итак, вот в чем проблема: р>

Код: Выделить всё

command = "lilypond-book.py --output="+args.output+" --pdf -lERROR --lily-loglevel=ERROR "+f
print(command)
печать:

Код: Выделить всё

lilypond-book.py --output=C:\Users\xxx\Desktop\Tools\Songbook\Sample\pyOut --pdf -lERROR --lily-loglevel=ERROR book_general.lytex
Вставка этого вывода обратно в оболочку работает нормально.
Однако выполнение subprocess.run(command,shell=True) приводит к ошибке :

Код: Выделить всё

lilypond-book.py: error: file not found:  --output=C:\Users\xxx\Desktop\Tools\Songbook\Sample\pyOut --pdf -lERROR --lily-loglevel=ERROR book_general.lytex
Похоже, что использование подпроцесса портит анализ аргументов для lilypond-book.py, он игнорирует аргументы и рассматривает всю команду как «файл». Я также попробовал предпочтительный метод subprocess.run с аргументами, разделенными запятыми, но получил ту же ошибку.
Я ничего не понимаю.
Я использую Python 3.12. 2, предыдущая установленная версия была 3.7, IIRC. Лилипонд — 2.24.4. ОС — Windows 10.
Заранее благодарим за помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... args-wrong

Вернуться в «Python»