On 2005-06-10, Donn Cave <[EMAIL PROTECTED]> wrote: > In article <[EMAIL PROTECTED]>, > Grant Edwards <[EMAIL PROTECTED]> wrote: > >> On 2005-06-10, Mage <[EMAIL PROTECTED]> wrote: >> >> >>py> file_list = os.popen("ls").read() >> >> >> >>Stores the output of ls into file_list. >> >> >> > These commands invoke shell indeed. >> >> Under Unix, popen will not invoke a shell if it's passed a >> sequence rather than a single string. > > I suspect you're thinking of the popen2 functions.
According to the current module reference, that's the behavior of the os.popen*() functions: http://docs.python.org/lib/os-newstreams.html#os-newstreams > On UNIX, os.popen is posix.popen, is a simple wrapper around > the C library popen. It always invokes the shell. Not according the the docs: Also, for each of these variants, on Unix, cmd may be a sequence, in which case arguments will be passed directly to the program without shell intervention (as with os.spawnv()). If cmd is a string it will be passed to the shell (as with os.system()). It's not exactly clear what "these variants" refer to, but I read it as referring to all of the the os.popen functions. Perhaps it only refers to os.popen[234]? > The no-shell alternatives are spawnv (instead of system) and > the popen2 family (given a sequence of strings.) > > Donn Cave, [EMAIL PROTECTED] -- Grant Edwards grante Yow! FIRST, I'm covering at you with OLIVE OIL and visi.com PRUNE WHIP!! -- http://mail.python.org/mailman/listinfo/python-list