Python Forum
reading data from a file - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: reading data from a file (/thread-2596.html)



reading data from a file - iFunKtion - Mar-27-2017

Hi,

I have this function, but I can't get it to work:
class DataTest( object ):
    def testReadData( self ):
        path = '/home/pi/Desktop/test.txt'
        with open(path, 'r') as f:
            f.read()
Yet when I try to get the text from the file from outside the class:
test = DataTest.testReadData(self)
print(test)
It returns None

What am I doing wrong please?


RE: reading data from a file - nilamo - Mar-27-2017

Well, that should be giving an error, since self is undefined. And even if it was defined, you never return anything from the function, so the result will always be None.

But anyway, instantiate the class first:
test = DataTest()
data = test.testReadData()
print(data)



RE: reading data from a file - wavic - Mar-27-2017

class DataTest(object):
    def testReadData(self):
        path = '/home/pi/Desktop/test.txt'
        with open(path, 'r') as f:
            return f.read()
data = DataTest()
file = data.testReadData()



RE: reading data from a file - iFunKtion - Mar-28-2017

@ nilamo thank you that makes a bit more sense to me now. I was very tired last night and now it's a little more obvious. Even though I have been learning OOP now for 8 months solidly, the whole self thing is still extremely confusing, I'm hoping it will at some point start to make sense, as the only time I know to or to not use self is when an error message says self is required or self is undefined.

@ Wavic, thanks for correcting my code, I forgot one more thing from the code and that was to assign a variable for f.read(), as the code kept returning the object in memory, not the dictionary that was in the file, so I now have this working and this is the code that I used:
class DataTest(object):
    def testReadData(self):
        path = '/home/pi/Desktop/test.txt'
        with open(path, 'r') as f:
            data = f.read()    # <--- this line is the difference between the text and the location of the text in memory
            return data