Python Syntax Problem: Comment and Backslash
This is a example of Python syntax idiocy.
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 Bin
https://plus.google.com/109540056756953832901/posts]
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
2013-02-21 original discussion https://plus.google.com/112757647855302148298/posts/VdV9mKfB8h2