Enchanter wrote:
How to pass the raw command line arguments to the python?

Such as:

     mypython.py  txt -c "Test Only" {Help}


The arguments I hope to get is:

              txt -c "Test Only" {Help}               -- Keep the
quotation marks in the arguments.


As Chris has said, the shell (and the C runtime) preprocesses the line before python ever sees it. However, if you're on Windows, there is a function GetCommandLine, located in Kernel32.dll, which I *think* keeps the raw bytes typed by the user. Clearly, that would be a non-portable answer, but here's some samples if you want to try it:

import sys
print sys.argv            #this one loses the quotes

import ctypes
#print ctypes.windll.kernel32.GetModuleHandleA
#hdl = ctypes.windll.kernel32.GetModuleHandleA(0)
#print hdl

func = ctypes.windll.kernel32.GetCommandLineA
print func
func.restype = ctypes.c_char_p

cmd = ctypes.windll.kernel32.GetCommandLineA()
print cmd           #this one gives a single string, such as the one below:

"C:\ProgFiles\Python26\python.exe" "M:\Programming\Python\sources\dummy\args.py" txt -c "Test Only" (Help)

If you do go this route, but still want to be portable, you could make this code conditional on platform, then document the user to use escaping on Linux and Apple, while you do this approach for Windows.


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

Reply via email to