Python Syntax Problem: Complexity of Comment Syntax and Backslash

,

this is a example of Python syntax voodoo.

why do i get a syntax error in the following?

# traverse the dir, remove temp files
for dpath, dirList, fileList in os.walk(inPath, topdown=False):
    for ff in fileList:
        if (ff == ".htaccess") or \
                (ff == ".DS_Store") or \
                re.search(r"^xx", ff) or \
                re.search(r"^#.+#$", ff) or \
                # re.search(r"~$", ff) or \
                re.search(r"^xx", ff):
            print("◆", ff)
File "/home/xah/git/xahscripts/make_download_copy/delete_temp_files.py3", line 46
    # re.search(r"~$", ff) or \
                              ^
SyntaxError: invalid syntax

if you remove the comment, then it's fine.

here's the tech answer, given by Wang Bin.

A line ending in a backslash cannot carry a comment. A backslash does not continue a comment. A backslash does not continue a token except for string literals (i.e., tokens other than string literals cannot be split across physical lines using a backslash). A backslash is illegal elsewhere on a line outside a string literal.

from http://docs.python.org/2/reference/lexical_analysis.html#explicit-line-joining

Wang also gave this tip:

BTW, I think a more pythonic way to check is:

for pattern in (r'^\.htaccess$', r'^\.DS_Store$', r'~$', r'^xx'):
    if re.search(pattern, ff):
        print ff

original discussion https://plus.google.com/112757647855302148298/posts/VdV9mKfB8h2

blog comments powered by Disqus