генератор возвращающий строку

Есть некий класс:

class Ticker:
    def __init__(self, file_path):
        self.file_path = file_path

    def open(self):
        open_ticker = open(self.file_path, mode='r')

И есть функция, которая получает имя файлов для класса, потом складывает имя папки и файла в один путь и передает классу. Далее класс открывает этот путь:

def find_file_path():
    path = "folder/"
    for dirpath, dirnames, filenames in os.walk(path):
        for ticket_files in path:
            ticker = Ticker(file_path=patch+ticket_files)

Как вместо функции сделать генератор, который будет передаваться в класс? Вот так:

ticker = Ticker(file_path=generator(path))


Ответы (1 шт):

Автор решения: Serg Bocharov

Для общего понимания, это выглядеть будет как-то так:

import os


class Ticker:
    def __init__(self, file_path):
        self.file_path = file_path

    def open(self):
        for file_name in self.file_path:
            open_ticker = open(file_name, mode='r')
            for line in open_ticker:
                print(line)


def generate_filenames(dirname):
    for dir_path, dir_names, file_names in os.walk(dirname):
        for file_name in file_names:
            yield os.path.join(dir_path, file_name)


ticker = Ticker(file_path=generate_filenames("/folder"))
ticker.open()
→ Ссылка