Let’s say we have a string in Python, for example a command with some arguments, like so:
cmd = 'pytest -m "not live"'
If you want to split it into pieces, you’d use str.split
, like so:
>>> cmd.split()
['pytest', '-m', '"not', 'live"']
But that doesn’t quite get it right, with "not live"
split into "not
and live"
. Sure, it’s technically correct, which we all know is the best kind of correct, but we probably want those two parts to go together.
Enter shlex.split
:
>>> import shlex
>>> shlex.split(cmd)
['pytest', '-m', 'not live']
shlex
is a wicked cool built-in module for lexical analysis of Unix shells.
Hat tip to Brian Okken and his podcast episode and blog post about argparse testing.
Thanks for reading! You can keep up with my writing via the feed or newsletter, or you can get in touch via email or Mastodon.