On Thu, Aug 26, 2021, at 08:50, Evan Greenup via Python-ideas wrote:
> Currently, when what to execute external command, either os.system() or 
> subprocess functions should be invoked.
> 
> However, it is not so convenient, it would be nice to use "``" symbol 
> to brace the shell command inside.
> 
> like:
> 
> stdout_result_str = `cat file.txt | sort | grep hello`

I don't think this is an important enough feature to be worth using up one of 
the few free ascii characters available for new syntax. However, it might be 
useful to have a helper function to build pipelines without the shell, so you 
could take the list [['cat', 'file.txt'], ['sort'], ['grep', 'hello']] and get 
this result.

Like, currently, to set up this pipeline (putting aside the useless use of 
cat), you have to do the following:

p1 = subprocess.Popen(['cat', 'file.txt'], stdout=PIPE)
p2 = subprocess.Popen(['sort'], stdout=PIPE, stdin=p1.stdout)
result = subprocess.check_output(['grep', 'hello'], stdin=p2.stdout)

[there are nuances about closing the intermediate pipes in the parent process 
that I've left out of this simple example]

something like subprocess.check_output_pipelined(['cat', 'file.txt'], ['sort'], 
['grep', 'hello']) might be useful.

> Its is enhanced feature which combine both subprocess and os.system

To do this *with* a shell, you can use os.popen and read the resulting file 
stream. But there are good reasons, I think, to want to be able to do this 
without a shell.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/7VA3PBQ6KPCRIMTASRC3YOTH5FS7OMHM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to