Asun Friere wrote:
On Aug 8, 6:07 am, Mike Driscoll <[EMAIL PROTECTED]> wrote:
On Aug 6, 8:07 pm, Kevin Walzer <[EMAIL PROTECTED]> wrote:

 >>> import os
 >>> foo = os.system('whoami')
kevin
 >>> print foo
0
 >>>
The standard output of the system command 'whoami' is my login name. Yet
the value of the 'foo' object is '0,' not 'kevin.' How can I get the
value of 'kevin' associated with foo?
--
Kevin Walzer
Code by Kevinhttp://www.codebykevin.com
Just an FYI, the os.system, commands, and os.popen* stuff is
deprecated in Python 2.4+. The subprocess module is supposed to
replace them all.

See the docs for more info:http://docs.python.org/lib/module-subprocess.html

I think the equivalent is subprocess.Popen with the communicate()
method:

http://docs.python.org/lib/node532.html

HTH

Mike

Something like this should work,

from subprocess import Popen, PIPE
me = Popen('whoami', stdout=PIPE, shell=True).stdout.read()

but if I was in a hurry to find out who I was I would be tempted still
to use the deprecated "os.popen('whoami').read()".

I assume Asun added the above line. I agree with whoever wrote it. SLT

--
http://mail.python.org/mailman/listinfo/python-list

==========================

Can we take a moment and look at what is happening here?

Python developers are creating an unwanted item!

Let's take a good look:

1) import os                                                          9
2) name=os.popen('whoami').read()                                    30

3) from subprocess import Popen, PIPE                                34
4) me = Popen('whoami', stdout=PIPE, shell=True).stdout.read()       59

While lines 1 and 3 are typically done once per module, line 3 would seem to imply the need for making specific requests for sub-process and associated and (required) other pieces. Lots of combinations to remember, fumble, and have to re-research to do the simple.

Stats point up something too:
 30/9  = 3.333...
 59/30 = 1.966...

without any other factors such as normally additional lines of code for the more verbose 'better' package it still will take at least twice as long to code the same thing. Add Murphy's Law and the typos go through the roof. Expect (after all is said and done) for the same process to take 3 times as much clock time to complete the same project using the padded up new and improved vs the concise.

This is not intuitive and it is not necessary and it most certainly is not wanted. Not by the programmer, not by the client and not by the one paying the paycheck. If 1&2 have a security hole - address it directly. Do not add more confusion to help cover greater holes. Or to pad your pockets because you are bored.

Somebody had to say it. Besides, as a trouble shooter I used to get paid to locate and fire people that padded it up to their employers. The things of which individuals can justify to themselves is truly amazing.

I still prefer assembly. It's all right there, right up front. No compiler anomalies (accidental or intentional) to deal with.


Man the shelters Honey; major incoming expected momentarily. :)



Steve
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to