TypeError: '_io.TextIOWrapper' object is not subscriptable in Python

Dung Do Tien Sep 13 2021 209

 Hello you guys, I am a newbie in Python and I'm also studying more about Python.

I have a small assignment, I want to read file and analystic data of it. Like this:

def medianStrat(lst):
    count = 0
    test = []
    for line in lst:
        test += line.split()
        for i in lst:
            count = count +1
            if count % 2 == 0:
                x = count//2
                y = lst[x]
                z = lst[x-1]
                median = (y + z)/2
                return median
            if count %2 == 1:
                x = (count-1)//2
                return lst[x]     # Where the problem persists

def main():
    lst = open(input("Input file name: "), "r")
    print(medianStrat(lst))

main()

But I get an exception TypeError: '_io.TextIOWrapper' object is not subscriptable when I run code above.

Traceback (most recent call last):
File "C:/Users/PycharmProjects/Comp Sci/2015/2015/storelocation.py", line 30, in <module>
main()
File "C:/Users/PycharmProjects/Comp Sci/2015/2015/storelocation.py", line 28, in main
print(medianStrat(lst))
File "C:/Users/PycharmProjects/Comp Sci/2015/2015/storelocation.py", line 24, in medianStrat
return lst[x]
TypeError: '_io.TextIOWrapper' object is not subscriptable

And I am using python 3.8.2

Anyone can explain it to me? How can I solve it?

Thanks for any response.

Have 1 answer(s) found.
  • M

    Manish Kumar Sep 13 2021

    You can try change:

    lst = open(input("Input file name: "), "r")

    To

    lst = open(input("Input file name: "), "r").readlines()

    Also, you are not closing the object file, it would be better because it sure that file is closed:

    with open(input("Input file name: ", "r") as lst:
       print(medianStrat(lst.readlines()))

    I hope it helpful for you.

Leave An Answer
* NOTE: You need Login before leave an answer

* Type maximum 2000 characters.

* All comments have to wait approved before display.

* Please polite comment and respect questions and answers of others.

Popular Tips

X Close