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

clyfish at gmail.com clyfish at gmail.com
Wed May 7 22:29:58 EDT 2008


On 5月7日, 上午9时45分, Justin Ezequiel <justin.mailingli... at gmail.com>
wrote:
> On May 6, 5:19 pm, clyf... at gmail.com wrote:
>
>
>
> > 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.
>
> cannot help with the backslashes but try findstr instead of find

Thank you.
findstr doesn't need quotes, so it works.



More information about the Python-list mailing list