Reputation: 1687
Trying to incorporate a generator object into my code but some how its not working correctly.
def get_data():
data = some_api_call
result = data.json()
return result
result looks like like this, where each {} is on new line:
{u'bytes_out': 1052.0, u'host': u'abc.com'}
{u'bytes_out': 52.0, u'host': u'def.com'}
{u'bytes_out': 5558.0, u'host': u'xya.com'}
...
def write_to_file(line):
#replacing the write statement with a print for testing
print(line)
def read_report(data):
for line in data:
yield line
def main():
alldata = get_data()
write_to_file(read_report(alldata))
My expectation here is that it should print out:
{u'bytes_out': 1052.0, u'host': u'abc.com'}
{u'bytes_out': 52.0, u'host': u'def.com'}
{u'bytes_out': 5558.0, u'host': u'xya.com'}
but what im getting back is :
<generator object read_report at 0x7fca02462a00>
not sure what I'm missing here
*** EDIT - fixed I was using it incorrectly
def main():
all_data = get_data()
for line in read_report(all_data)
print(line)
Upvotes: 0
Views: 587
Reputation: 9197
You can also print directly from a generator:
gen = range(1,10)
print(*gen, flush=True)
#out: 1 2 3 4 5 6 7 8 9
so for your case:
print(*read_report(all_data), flush=True)
Upvotes: 1