In cmd, I can use find like this.

C:\>netstat -an | find "445"
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  UDP    0.0.0.0:445            *:*

C:\>

And os.system is OK.
>>> import os
>>> os.system('netstat -an | find "445"')
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  UDP    0.0.0.0:445            *:*
0
>>>

But I don't know how to use subprocess.Popen to do this.

from subprocess import Popen, PIPE

p1 = Popen(['netstat', '-an'], stdout = PIPE)
p2 = Popen(['find',  '"445"'], stdin = p1.stdout, stdout = PIPE)
print p2.stdout.read()

It doesn't work.
Because subprocess.Popen execute "find" like this.

C:\>find \"445\"
拒绝访问 - \

C:\>

It adds a '\' before each '"'.
How to remove the '\'?
Thank you.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to