запись отфильтрованного списка в файл в Python - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь создать список из файла на основе определенных критериев, затем отфильтровать эти элементы и записать их в другой файл. У меня есть следующее, но новый файл пуст.

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 ]

1 голос
/ 11 марта 2019

Вы делаете 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")
0 голосов
/ 11 марта 2019

Вы должны позвонить filteredlines.sort(), а затем набрать filteredlines: fd.write(line)

...