[Solved] TypeError: ‘_io.TextIOWrapper’ object is not subscriptable

Getting the error as the title says.
Here is the traceback. I know lst[x] is causing this problem but not too sure how to solve this one. I’ve searched google + stackoverflow already but did not get the solution I am looking for.

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

Here is the actual code

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

So what could be the solution to this problem or what could be done instead to make the code work? ( The main function that the code should do is to open a file and get the median )

Enquirer: Eric


Solution #1:

You can’t index (__getitem__) a _io.TextIOWrapper object. What you can do is work with a list of lines. Try this in your code:

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

Also, you aren’t closing the file object, this would be better:

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

with ensures that file get closed, see docs

Respondent: Robin Curbelo

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy