On Sat, Jul 26, 2008 at 7:59 AM, Tim Cook <[EMAIL PROTECTED]>wrote: > Hi All, > > I just ran into an issue with the rstrip method when using it on path > strings. > > When executing a function I have a need to strip off a portion of the > current working directory and add on a path to a log file. Initially > this worked great but then I added a branch in SVN which caused the path > to contain 'LNCCWorkshop'. The rstrip() then began removing the > characters 'shop' leaving an incorrect path to the log file. When I > hard coded this path it worked okay but then did the same thing later in > the file when I needed to point to a database. The code worked fine with > a different path. Here are some code fragments. > > > logfile=os.getcwd().rstrip('src/oship/atbldr')+'/oship/log/at_build_errors.log' > > this worked when the path was: > /home/tim/ref_impl_python/TRUNK/oship/src/oship/atbldr > > the code above returns: > /home/tim/ref_impl_python/TRUNK/oship/log/at_build_errors.log > > but when I tried a branches version that has the path: > /home/tim/ref_impl_python/BRANCHES/LNCCWorkshop/oship/src/oship/atbldr > > it SHOULD return: > > /home/tim/ref_impl_python/BRANCHES/LNCCWorkshop/oship/log/at_build_errors.log > > but I get: > /home/tim/ref_impl_python/BRANCHES/LNCCWork/oship/log/at_build_errors.log > > logfile=os.getcwd() > print logfile is correct; but when I add the .rstrip('src/oship/atbldr') > it also strips the 'shop' off of LNCCWorkshop and returns > /home/tim/ref_impl_python/BRANCHES/LNCCWork/oship/log/at_build_errors.log > > I had two other people looking at this as we did troubleshooting and we > could not determine the cause. It is repeatable with this path name. > In resolution I renamed the branch to just LNCC and it works fine. > > Thoughts? >
I think rstrip does not do what you think it does. From: http://docs.python.org/lib/string-methods.html "The chars argument is not a suffix; rather, all combinations of its values are stripped" Thus, since the characters p,o,h, and s are all in the argument you supplied to rstrip, they are removed, then stripping is stopped at the k because that is not in the chars arg you supplied. To do what you really want I think you need to use rfind/rindex to locate the last occurrence of the substring and then truncate the string yourself. Karen
-- http://mail.python.org/mailman/listinfo/python-list