import shlex shlex.split(s, comments=False, posix=True)
s
- команда bash/sh для разбора,comments=False
- отключает обработку комментариев,posix=True
- режим работы.Функция shlex.split()
модуля shlex
разбивает строку s
, используя синтаксис, подобный терминальной оболочке.
Если атрибут comments
имеет значение False
(по умолчанию), то синтаксический анализ комментариев в данной строке будет отключен, установив для атрибута comments
экземпляра shlex
пустую строку.
Эта функция по умолчанию работает в режиме POSIX.
Если нужно разбить команду терминала на последовательность аргументов для использования в subprocess.Popen()
, особенно в сложных случаях, то функция shlex.split()
может сделать это за вас:
>>> import shlex, subprocess, pprint >>> cmd = '/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo \'$MONEY\'"' >>> args = shlex.split(cmd) >>> pprint.pprint(args, width='60') #['/bin/vikings', # '-input', # 'eggs.txt', # '-output', # 'spam spam.txt', # '-cmd', # "echo '$MONEY'"] >>> p = subprocess.Popen(args)