[Python-Dev] subprocess insufficiently platform-independent?
Steven Bethard
steven.bethard at gmail.com
Mon Aug 25 19:39:22 CEST 2008
On Mon, Aug 25, 2008 at 11:30 AM, Barry Warsaw <barry at python.org> wrote:
> On Aug 25, 2008, at 1:13 PM, Guido van Rossum wrote:
>
>> Several people at Google seem to have independently discovered that
>> despite all of the platform-independent goodness in subprocess.py, you
>> still need to be platform aware. One of my colleagues summarized it
>> like this:
>>
>> """
>> Given a straightforward command list like:
>>
>> cmd = ['svn', 'ls', 'http://rietveld.googlecode.com/svn/trunk']
>>
>> You apparently cannot pass this list to any subprocess function
>> (subprocess.call() or otherwise) with a set of arguments that allow it
>> to "just work" on both Windows and non-Windows systems.
>
> Unless I'm misremembering (I no longer have access to Windows), I believe
> that if you use ' '.join(cmd) as the first argument, it will work
> cross-platform.
FWIW, I've also struggled with similar issues. For example, with no
shell= argument, Windows typically opens up an extra window to run the
command, while Unix doesn't. My most recent hack around this looked
something like::
try:
import win32con
except ImportError:
win32con = None
kwargs = dict(...)
if win32con is not None:
kwargs['creationflags'] = win32con.CREATE_NO_WINDOW
subprocess.Popen(cmd, **kwargs)
I'd love to see subprocess become more consistent cross-platform.
Steve
--
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
--- Bucky Katt, Get Fuzzy
More information about the Python-Dev
mailing list