On Aug 19, 10:35 pm, [EMAIL PROTECTED] wrote: > optparse seems to be escaping control characters that I pass as > arguments on the command line. Is this a bug? Am I missing > something? Can this be prevented, or worked around? > > This behaviour doesn't occur with non-control characters. > > For example, if this program (called test.py): > from optparse import OptionParser > parser = OptionParser() > parser.add_option("-d", dest="delimiter", action="store") > (options, args) = parser.parse_args() > print options > > is run as follows: > python test.py -d '\t' > > it outputs: > {'delimiter': '\\t'} > > i.e. the \t has had an escape character added to give \\t.
You are inputting a TWO-byte string composed of a backslash and a lowercase t, and feeding that to OptionParser. C:\junk>type test.py import sys; a = sys.argv[1]; d = {'delimiter': a} print len(a), a, str(a), repr(a) print d # Note: this is Windows, where the shell quote is ", not ' C:\junk>python test.py "\t" 2 \t \t '\\t' {'delimiter': '\\t'} The extra backslash that you see is caused by the (implicit) use of repr() to display the string. If you want/need to enter a literal TAB character in the command line, consult the manual for your shell. HTH, John -- http://mail.python.org/mailman/listinfo/python-list