Need a cross-platform way to execute binary

techtonik techtonik at gmail.com
Sat Feb 10 04:03:40 EST 2007


Hello, everyb.

Does anybody know simple cross-platform method of probing if
executable binary is available and launching it.


Problem no.1: test if executable file is available
I'll take windows platform as the most relevant in this case.
os.access() doesn't handle env PATHEXT and can't detect if a given
path would be executable or not. Here "executable" means file that
could be be launched by system() (if there are any other ways - I'd be
happy to know them)

Suppose I have "ufo2exe" executable two directories up.
>>> os.access("../../ufo2map.exe", os.X_OK)
True

However...
>>> os.access("../../ufo2map", os.X_OK)
False

But...
>>> os.system("..\..\ufo2map")
---- ufo2map 1.0 ----
0


Problem no.2: launch executable file
The same windows platform again. All python commands are using forward
slashes for paths, but system doesn't handle this situation (it could
at least try to convert immediate forward slashes to backwards)

os.access() thinks this file is executable, but os.system() fails ...
>>> os.access("../../ufo2map.exe", os.X_OK)
True
>>> os.system("../../ufo2map.exe")
'..' is not recognized as an internal or external command,
operable program or batch file.
1

the contrary - access() fails to tell this path can be launched, but
file Is executable,  ...
>>> os.access("..\..\ufo2map", os.X_OK)
False
>>> os.system("..\..\ufo2map")
---- ufo2map 1.0 ----
0


Is there any workaround in Python or I have to stick with platforms-
specific quirks?
I'm using Python 2.4.2

Thanks!.

--
--t.




More information about the Python-list mailing list