Tim Golden added the comment: Dave, you seem to misunderstand what's happening here: the os.chdir function doesn't have access to the characters which are typed in the script or in the interpreter. It receives a Python string object. The parser etc. which constructs the string object determines which characters are special, which are not, and so on. It also takes account of special prefixes such as r"", u"" and so on. Neither of these two things knows about the other. The parser doesn't know anything about the use the string will be put to; the os.chdir code doesn't know anything about the origins of the string it's receiving.
This is true of Python and I doubt that it's very different for any other language you care to name. It's certainly true -- mutatis mutandis -- of C where *exactly* the same issue applies. Here's the MSDN page for the MS CRT _chdir function: http://msdn.microsoft.com/en-us/library/bf7fwze1(v=vs.80).aspx In the example half way down, you can see the warning about single backslashes. Every language brings its learning points. In Python, if you want to include backslashes in a literal string, you need to prefix that string with an r"" prefix, eg r"c:\temp". Speaking as someone who uses Python on Windows on a daily basis and has done so for some years, this really isn't an issue once you're over the initial "Why did that not work?" blip. Using forward slashes is often a perfectly good way, sometimes not. In short, whatever else this is, it's not a Python bug and it's not going to change in the near future. I freely admit that the Python world is dominated by Unix-types for whom backslashes have little significance, and that can colour the emphasis which are given to some things but Python is very far from unworkable on Windows. TJG On 06/03/2013 21:38, Dave Humphries wrote: > > Dave Humphries added the comment: > > Hi Amaury, > As I can't reopen the bug I will have to add it here (or open a new bug > report). > > The issue was about the string used in os.chdir() particularly. > While this is expected behaviour in a python string it is not expected > behaviour from a well formed file path: > 1. \t and \n are errors when used in a path. > 2. A well formed Windows path with directories that start with a t or > n is interpreted as tabs and line feeds by Python. That is certainly > not expected behaviour in Windows this also means that any Python > built in method that uses the os.chdir() with a standard format > environment variable or registry setting will fail with the same > issue. It also sounds like any os module method will also be affected. > 3. This issue took 1/2 hr to resolve. This makes python unreliable to > use on Windows with a difficult to find bug. > > The suggestion of using forward slashes is unworkable when the scripts > will be used across a range of computers where environment or registry > variables get used. > > My suggestion is that the os methods get rewritten so that path > parsing rules match the expected behaviour for the platform. > > Regards, > Dave > > On Wed, Mar 6, 2013 at 7:50 PM, Amaury Forgeot d'Arc > <rep...@bugs.python.org> wrote: >> >> Amaury Forgeot d'Arc added the comment: >> >> The backslash \ has a special meaning in strings: \n is the new line >> character, and \t is the tab character: >> http://docs.python.org/2/reference/lexical_analysis.html#string-literals >> >> Try to print the string! >> You could use \\, or raw strings r"like this". >> Or just use forward slashes / which are allowed by Windows. >> >> ---------- >> nosy: +amaury.forgeotdarc >> resolution: -> invalid >> status: open -> closed >> >> _______________________________________ >> Python tracker <rep...@bugs.python.org> >> <http://bugs.python.org/issue17366> >> _______________________________________ > > ---------- > > _______________________________________ > Python tracker <rep...@bugs.python.org> > <http://bugs.python.org/issue17366> > _______________________________________ > _______________________________________________ > Python-bugs-list mailing list > Unsubscribe: > http://mail.python.org/mailman/options/python-bugs-list/mail%40timgolden.me.uk > ---------- nosy: +tim.golden _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17366> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com