将过滤后的列表写入python中的文件

时间:2019-03-11 00:19:19

标签: python python-3.x file output

我正在尝试根据某些条件从文件创建列表,然后过滤这些项目并将其写入另一个文件。我有以下内容,但是新文件为空。

def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
    fd =open(filename)
    lines = fd.readlines()
    filteredlines = []
    fd.close()
    for l in lines:
        if l[0] in criteria:
            filteredlines.append(l)
    return filteredlines
    fd=open('2015PopEstimateSubset.csv','w')
    fd.write(filteredlines.sort)
    fd.close

readlinesfromfilecriteria("2015PopEstimatesComplete.csv")

2 个答案:

答案 0 :(得分:1)

在开始编写任何内容之前,请先做return。重新排列代码以解决此问题,很可能您要在写入后移动return。此外,sort()不返回任何内容,而是按原样排序,因此您的write()很有用。您需要使用sorted()或对列表进行排序,然后编写。

此外,您应该使用with ...语法进行文件访问或添加适当的错误处理。

所以您最有可能想要这个:

def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
    with open(filename) as fd:
        lines = fd.readlines()

    filteredlines = [l for l in lines if l[0] in criteria]
    with open('2015PopEstimateSubset.csv','w') as fd:
        fd.write(sorted(filteredlines))

readlinesfromfilecriteria("2015PopEstimatesComplete.csv")

答案 1 :(得分:-2)

您应该先致电filteredlines.sort(),然后在filteredlines: fd.write(line)中拨打电话