Python Glossary English

все Python 3shlexфункция

shlex.split()

разбор командной строки

Разбивает строку как командная оболочка Unix: учитывает кавычки и экранирование. 'a "b c"' → ['a', 'b c'].

Синтаксис

shlex.split(s, comments=False, posix=True)

В отличие от str.split(), не рвёт аргумент в кавычках, поэтому годится, чтобы превратить строку команды в список для subprocess.run без shell=True. Правила — POSIX-оболочки, не Windows: обратная косая черта экранирует, так что путь C:\Users превратится в C:Users. Комментарии # по умолчанию не вырезаются (comments=True это включает), а незакрытая кавычка даёт ValueError.

Примеры

import shlex
print(shlex.split('cp "my file.txt" backup/'))  # → ['cp', 'my file.txt', 'backup/']
print('cp "my file.txt" backup/'.split())  # → ['cp', '"my', 'file.txt"', 'backup/']
import shlex
print(shlex.split(r'dir C:\Users'))  # → ['dir', 'C:Users'] — обратная косая черта съедена
print(shlex.split('run # note', comments=True))  # → ['run']
shlex.split('echo "oops')  # → ValueError: No closing quotation

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности