Since lines are so critical to Python syntax, I'm a little surprised there's no majorly obvious solution to this... or maybe I'm just blind.
Problem: Translate this into a shell one-liner: import os for root, dirs, files in os.walk("."): if len(dirs + files) == 1: print(root) Solution 1: SyntaxError python -c 'import os; for root, dirs, files in os.walk("."): if len(dirs + files) == 1: print(root)' You can't put a 'for' statement after an 'import' with just a semicolon. Solution 2: SyntaxError python -c 'import os\nfor root, dirs, files in os.walk("."): if len(dirs + files) == 1: print(root)' You can't put a backslash escape into your code like that! Makes no sense. Solution 3: Silence python -c 'import os' -c 'for root, dirs, files in os.walk("."): if len(dirs + files) == 1: print(root)' Haven't dug into exactly what this does, but the docs say that -c terminates the option list, so I would guess that the second -c and its arg get passed to the script. Solution 4: Rely on the shell's ability to pass newlines inside arguments $ python -c 'import os > for root, dirs, files in os.walk("."): > if len(dirs + files) == 1: print(root) > ' That works, but at that point, you aren't writing a one-liner any more. It's also fiddly to edit. Is there a better way to put multiple virtual lines into a 'python -c' command? ChrisA -- https://mail.python.org/mailman/listinfo/python-list