Reputation: 10794
I don't understand what's happening when the following function is called:
def doSmth(inFile):
print inFile
with open(inFile,'r') as trainSet:
for instLine in trainSet:
# do smth
yield instLine
why when the last line with yield is removed there's an error that the file doesn't exist (it really doesn't exist). Whereas, when I have the line , there's no error. Another question, why in the second case, print inFile has no effect while it has in the first case. Thanks.
Upvotes: 1
Views: 1066
Reputation: 133764
Because you aren't actually iterating over the generator:
You have something similar to this in your code:
doSmth() # simply creates generator without advancing it
without the for x in doSmth()
Upvotes: 3