Question

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.

Was it helpful?

Solution

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()

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top