<div dir="ltr"><div class="gmail_extra">I would rather think of this as an opportunity to help avoid injection vectors.</div><div class="gmail_extra"><br></div><div class="gmail_extra">if there was a separate.. . interpolation provider ..</div><div class="gmail_extra">then something like</div><div class="gmail_extra"><br><span style="color:rgb(80,0,80);font-size:12.8px">os.system('dosomething {a} </span><span style="color:rgb(80,0,80);font-size:12.8px">{b} </span><span style="color:rgb(80,0,80);font-size:12.8px">{c}</span><span style="color:rgb(80,0,80);font-size:12.8px">'.format(...))</span></div><div class="gmail_extra"><div class="gmail_extra"><br></div><div class="gmail_extra">could be written as ( !cmd here being a special type of f-string that does command line escaping, borrowing syntax from another thread a few days ago..)</div><div class="gmail_extra"><br><span style="color:rgb(80,0,80);font-size:12.8px">os.sytem(!cmd'dosomething {a} </span><span style="color:rgb(80,0,80);font-size:12.8px">{b} </span><span style="color:rgb(80,0,80);font-size:12.8px">{c}</span><span style="color:rgb(80,0,80);font-size:12.8px">')</span></div><div class="gmail_extra"><span style="color:rgb(80,0,80);font-size:12.8px"><br></span></div><div class="gmail_extra"><span style="color:rgb(80,0,80);font-size:12.8px">This is both shorter and more resilient to injections.</span></div><div class="gmail_extra"><font color="#500050"><span style="font-size:12.8px">Essentially it feels like you annotate a string as "this will be executed on the command line" and the interpolation adapts.</span></font></div><div class="gmail_extra"><br></div><div class="gmail_extra">this would make doing the right thing the same as doing the easy thing and this would be good overall, no?</div><div class="gmail_extra">I don't know about you, but i dont know by heart how to escape arbitrary user input and deal with all of the corner cases.</div><div class="gmail_extra"><br></div><div class="gmail_extra">yes, you can do this more safely with Popen.. but that is quite a bit more effort.</div><div class="gmail_extra">also often times there is no such alternative or it is very unweildy (sql land this happens more often)</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div></div></div>