Почему моя вторая функция ничего не возвращает? - PullRequest
1 голос
/ 17 октября 2019

Моя первая функция дает мне желаемый результат, но вторая функция просто дает мне пустой список, как я его сделал. Но если я закомментирую первую функцию и просто запускаю вторую функцию, она работает. Что я делаю неправильно?

import csv

f = open('C:\\Users\\keshabg\\Desktop\\sql_testing\\table_1.csv')
csv_f = csv.reader(f)

def units_by_level():
    lev1=[]
    lev2=[]
    lev3=[]
    lev4=[]
    lev5=[]
    for row in csv_f:
        if row[4]=='Level 1':
           lev1.append(row[5]) 
        if row[4]=='Level 2':
            lev2.append(row[5])
        if row[4]=='Level 3':
            lev3.append(row[5])
        if row[4]=='Level 4':
            lev4.append(row[5])
        if row[4]=='Level 5':
            lev5.append(row[5])
    return lev1,lev2,lev3,lev4,lev5   

a=units_by_level()
print("Level 1:",a[0],"Level 2:",a[1],"Level 3:",a[2],"Level 4:",a[3],"Level 5:",a[4])


def hours_by_level():
    lev1=[]
    lev2=[]
    lev3=[]
    lev4=[]
    lev5=[]
    for row in csv_f:
        if row[4]=='Level 1':
            lev1.append(row[6])

        if row[4]=='Level 2':
            lev2.append(row[6])
        if row[4]=='Level 3':
            lev3.append(row[6])
        if row[4]=='Level 4':
            lev4.append(row[6])
        if row[4]=='Level 5':
            lev5.append(row[6])
    return lev1,lev2,lev3,lev4,lev5



b=hours_by_level()
print("Level 1:",b[0],"Level 2:",b[1],"Level 3:",b[2],"Level 4:",b[3],"Level 5:",b[4])

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вам необходимо сбросить указатель на файл. Попробуйте это перед запуском 2-й функции:

f.seek(0)
0 голосов
/ 17 октября 2019

Считыватели файлов работают не совсем так, как вы думаете. После того, как вы откроете и прочитаете содержимое файла, вы не сможете автоматически просмотреть их снова. Итак, эти строки:

f = open('C:\\Users\\keshabg\\Desktop\\sql_testing\\table_1.csv')
csv_f = csv.reader(f)

создают программу чтения файлов, которая перебирает содержимое файла один раз. Если вы хотите делать это несколько раз, вам, вероятно, следует сначала сохранить содержимое файла в массиве, а затем выполнить итерацию по этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...