Richard D. Moores wrote:
Puzzled again. Why the error. Line 36 is the line just above "import
os.path". I have many other functions in mycalc.py with examples
formatted exactly the same way.

def convertPath(path):
    """
    Given a path with backslashes, return that path with forward slashes.

    By Steven D'Aprano  07/31/2011 on Tutor list
    >>> path = r'C:\Users\Dick\Desktop\Documents\Notes\College Notes.rtf'

Are you aware that this is not a raw string? It's wrapped inside another non-raw string, so it is merely a sub-string containing the letters r single-quote C colon backslash-U etc. Now, as it turns out, backslash-U and friends don't have any special meanings, so it will work fine, but that's an accident of the characters in the path. If it were backslash-n (say) instead, things would be different.

(P.S. the docstring itself can be a raw string. Just start it with r""" instead of """.)



    >>> convertPath(path)
    'C:/Users/Dick/Desktop/Documents/Notes/College Notes.rtf'
    """
    import os.path
    separator = os.path.sep
    if separator != '/':
        path = path.replace(os.path.sep, '/')
    return path

from mycalc import convertPath
Traceback (most recent call last):
  File "<string>", line 36, in <fragment>
Syntax Error: """: c:\Python32\lib\site-packages\mycalc.py, line 36-1


Is this the actual traceback you received? I would expect that importing mycalc.py would be fine, but that trying to run doctest over it *may* play up, probably with a SyntaxError.

It works fine for me when I paste your code directly into an interactive session, and the docstring looks as expected:


>>> print(convertPath.__doc__)

    Given a path with backslashes, return that path with forward slashes.

    By Steven D'Aprano  07/31/2011 on Tutor list
    >>> path = r'C:\Users\Dick\Desktop\Documents\Notes\College Notes.rtf'
    >>> convertPath(path)
    'C:/Users/Dick/Desktop/Documents/Notes/College Notes.rtf'


In general, expect to have fun and games getting doctests to do the right thing with backslashes. The interaction of doctests (which uses exec under the hood) and backslashes is rather ugly. But I don't know if that's the problem here.


Other than that, I'm afraid I can't reproduce your error. Perhaps there is some invisible character in the original file, such as a DOS "End of File" ctrl-Z, which was messing things up for you, you've eventually, and accidentally, deleted it. Because there's nothing obvious to explain why you get the error you get, or why it goes away when it does.




--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to