
On 08/26/2015 02:20 PM, Mike Miller wrote:
One of the remaining questions for the string interpolation subject is whether to allow for easy access to environment variables and output-capture of external processes (aka command-substitution) as bash does.
While incredibly useful in use-cases such as shell-script replacements, the functionality is perceived to be, if not dangerous. More so than arbitrary expressions? Given that we are talking about string literals and not input, I'm not sure, so am looking for feedback.
The idea is not unheard of in Python, there was a module that captured process output called commands in the old days, which was superseded at some point by subprocess.check_output() I believe.
Here is some example syntax modeled on bash, though placed inside .format braces. Note both start with $ as the signal::
>>> x'Home folder: {$HOME}' # environment 'Home folder: /home/nobody'
>>> x'Files: {$(/bin/ls .)}' # capture output 'foo foo1 foo2'
-1000 for any language syntax that allows access to environment variables or shell output. That said, with PEP-498 you can do:
import os f'HOME={os.environ["HOME"]}' 'HOME=/home/eric'
Which is about as easy as I'd like to make this. Eric.