Ross Ridge wrote:
> Tim Golden  <[EMAIL PROTECTED]> wrote:
>> but this doesn't:
>>
>> <c:/temp/firefox.bat>
>> "c:\Program Files\Mozilla Firefox\firefox.exe" "%*"
>> </c:/temp/firefox.bat>
>>
>> <code>
>> import subprocess
>>
>> cmd = [
>> r"c:\temp\firefox.bat",
>> "http://local.goodtoread.org/search?word=tim&cached=0";
>> ]
>> subprocess.Popen (cmd)
>>
>> </code>
>  
> Ross Ridge wrote:
>> You need to use double quotes both in the .BAT file and in the string
>> you pass to subprocess.Popen().
> 
> Tim Golden  <[EMAIL PROTECTED]> wrote:
>> ... If you simply requote the second element in the cmd list
>> ('"http:/....."') then the internal quotes are escaped by some part of
>> the mechanism and it still doesn't work.
> 
> Hmm... I guess things are much more messy than that.  CMD doesn't do
> standard quote processing of it's arguments or .BAT file arguments, and
> so is incompatible with how subprocess quotes args lists.  It looks like
> you need use a string instead of list with subprocess.Popen and not use
> quotes in the batch file.  So something like:
> 
> firefox.bat:
>       "c:\Program Files\Mozilla Firefox\firefox.exe" %1
> 
> code:
>       subprocess.Popen(r'c:\temp\firefox.bat 
> "http://local.goodtoread.org/search?word=tim&cached=0";')

This works.  The other thing that works is to put extra quotes around 
the URL when you pass in the list::


   >>> command= 'lynx.bat', '-dump', '"http://www.example.com/?x=1^&y=2";'
   >>> proc = subprocess.Popen(command,
   ...                         stdin=subprocess.PIPE,
   ...                         stdout=subprocess.PIPE,
   ...                         stderr=subprocess.PIPE)
   >>> proc.stdout.read()
   '   You have reached this web page by typing "example.com",
   "example.net",\n   or "example.org" into your web browser.\n\n   These
   domain  names are reserved for use in documentation and are not\n
   available for registration. See [1]RFC 2606, Section
   3.\n\nReferences\n\n   1. http://www.rfc-editor.org/rfc/rfc2606.txt\n'


I tried this before, and posted it, but I had mistakenly read from 
stderr instead of stdout. Thanks for making me double-check that code!

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

Reply via email to