how to use subprocess.Popen execute "find" in windows

clyfish at gmail.com clyfish at gmail.com
Tue May 6 05:19:17 EDT 2008


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.



More information about the Python-list mailing list