﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
148	python: os.popen doesn't accept backslashes	dmik		"I discovered a strange problem with `os.popen` regarding paths containing backslashes:

{{{#!python
import os

gcc_exe = ""C:\\usr\\bin\\gcc.exe""

print ""[""+repr(gcc_exe)+""]""

# [1] This works
exists = os.access(gcc_exe, os.X_OK)
print ""exists"", exists

if exists:

    # [2] This works too, if uncommented
    #os.execl(gcc_exe, ""gcc"", ""-dumpversion"")

    # [3] This doesn't work :(((
    out = os.popen(gcc_exe + ' -dumpversion', 'r')
    try:
        out_string = out.read()
        print out_string
    finally:
        out.close()
}}}

This gives the following output here:
{{{
D:>python popen.py
['C:\\usr\\bin\\gcc.exe']
exists True
C:usrbingcc.exe: not found
}}}

Both [1] and [2] cases work, but case [3] does not. Seems that some extra string evaluation happens before the string is passed down to the popen implementation  (as if `str(gcc_exe)` were called) which effectively kills backslashes.
"	defect	closed	major		python		medium	fixed		
