Получить данные другой функции - PullRequest
0 голосов
/ 28 мая 2020

Привет, всем нужна помощь. Я прочитал csv-файл с открытым синтаксисом и хочу использовать эти данные для другой функции. Как лучше всего скопировать данные функции.

Вот мой код:

import csv

def read_csv_file(filename):
    temperatures = []
    fans = []
    modes = []
    louvers = []
    swings = []
    with open(filename, 'r') as csv_file:
        csv_reader = csv.reader(csv_file)

        for line in csv_reader:
            temperatures.append(line[1])
            fans.append(line[2])
            modes.append(line[3])
            louvers.append(line[4])
            swings.append(line[5])
        return temperatures
        return fans
        return modes
        return louvers
        return swings

def get_feature():

    result = {}
    result['feature'] = [{'feature_name': '', 'ftype': 'section_option', 'group_name': '', 'value': ''}]
    result1 = dict()
    result1 = {'definition':[]}
    read_csv_file(filename)

    print (temperatures)


filename = 'ir_raw.csv'
csv_data = read_csv_file(filename)

Я хочу напечатать данные моего файла csv в функции def get_feature ():. Заранее спасибо !!

1 Ответ

1 голос
/ 28 мая 2020

Вы можете вернуться из функции только один раз, поэтому в read_csv_file выполняется только первый оператор возврата (возвращаемые температуры). Остальные данные забываются.

Простой способ обойти это - бросить все ваши списки в кортеж, а затем вернуть кортеж. Итак, в read_csv_file вы должны поместить:

data = (temperatures, fans, modes, louvers, swings)
return data

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

Полное решение с использованием ваших методов может быть следующим:

import csv

def read_csv_file(filename):
    temperatures = []
    fans = []
    modes = []
    louvers = []
    swings = []
    with open(filename, 'r') as csv_file:
        csv_reader = csv.reader(csv_file)
        for line in csv_reader:
            temperatures.append(line[1])
            fans.append(line[2])
            modes.append(line[3])
            louvers.append(line[4])
            swings.append(line[5])
        return (temperatures, fans, modes, louvers, swings)

def get_feature(data):
    #... do whatever you plan on doing
    print(data[0]) # for temperatures
    print(data[1]) # for fans
    print(data[2]) # for modes
    print(data[3]) # for louvers
    print(data[4]) # for swings

filename = 'ir_raw.csv'
csv_data = read_csv_file(filename)
get_feature(csv_data)

В качестве альтернативы, вместо использования модуля CSV, можно использовать numpy .genfromtxt или pandas .read_csv.

...