迭代列表时出现语法错误

时间:2014-05-22 18:02:47

标签: python sorting csv

我根据合同编写一个打开文件夹中文件的程序,将新行添加到列表中并检查重复项(通过每次创建一组原始列表(file_contents)中的列表来完成新条目已添加)。

sort()方法的目的是打开列表full_file_paths中包含的所有文件,并将其内容存储在列表中。但是,我收到错误(如下):

File "line_sort.py", line 24
  for entry in L:
                ^
SyntaxError: invalid syntax

有问题的方法如下:

def sort(directory):
    full_file_paths = get_filepaths(directory)
    # Go file by file
    for path in full_file_paths:
        with open(path, "r") as current_file:
            L = current_file.read().splitlines()
            print (str("Reading " + path)
            for entry in L:
                file_contents.append(entry.strip())
        # Creates a set from the array, which cannot contain duplicates.
        file_contents = list(set(file_contents))

我尝试更改数组的名称以考虑保留字,我试图在没有文件打开的情况下遍历列表并且它可以工作。
导致错误的相关行是此方法底部的第4行。我希望能够抓住这个问题,在接下来的时候摆弄这个问题。

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

您尚未关闭上一行的括号:

print (str("Reading " + path))
                             ^

仅供参考,您根本不需要致电str(),因为path类似str类型:

print("Reading " + path)

答案 1 :(得分:0)

正如@alecxe所说,你忘记了一个括号......但我宁愿说你忘了避免括号:

print (str("Reading " + path))
      ^                      ^

这些括号无用,因为打印语句而不是函数(请参阅the doc)。正如@Fred指出的那样,这适用于python版本< 3。

此外,我们在这里看不到get_filepaths函数,但如果您不确定返回的可迭代路径集是否为字符串,则应仅包装路径变量。所以你可以写一下:

print "Reading " + str(path)