Steven Bethard wrote: > I'm having trouble using the subprocess module on Windows when my > command line includes special characters like "&" (ampersand):: > > >>> command = 'lynx.bat', '-dump', 'http://www.example.com/?x=1&y=2' > >>> kwargs = dict(stdin=subprocess.PIPE, > ... stdout=subprocess.PIPE, > ... stderr=subprocess.PIPE) > >>> proc = subprocess.Popen(command, **kwargs) > >>> proc.stderr.read() > "'y' is not recognized as an internal or external command,\r\noperable > program or batch file.\r\n" > > As you can see, Windows is interpreting that "&" as separating two > commands, instead of being part of the single argument as I intend it to > be above. Is there any workaround for this? How do I get "&" treated > like a regular character using the subprocess module?
Although I'm sure you'll have looked into this already, the subprocess module on Windows is using CreateProcess pretty straightforwardly: http://msdn2.microsoft.com/en-us/library/ms682425(VS.85).aspx The docs there say that, to call a batch file, you need to specify the command interpreter with /c and pass the batch file, but as far as I can see it makes no difference! (Probably means there's a special-caser behind the scenes of CreateProcess). TJG -- http://mail.python.org/mailman/listinfo/python-list