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.

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top