类型错误:“_io.TextIOWrapper"对象不可下标 [英] TypeError: '_io.TextIOWrapper' object is not subscriptable
问题描述
正如标题所说的那样出现错误.这是回溯.我知道 lst[x] 导致了这个问题,但不太确定如何解决这个问题.我已经搜索了 google + stackoverflow,但没有得到我正在寻找的解决方案.
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/storelocation.py", line 30, in <module>
main()
File "C:/Users/honte_000/PycharmProjects/Comp Sci/2015/2015/storelocation.py", line 28, in main
print(medianStrat(lst))
File "C:/Users/honte_000/PycharmProjects/Comp Sci/2015/2015/storelocation.py", line 24, in medianStrat
return lst[x]
TypeError: '_io.TextIOWrapper' object is not subscriptable
实际代码如下
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))
那么这个问题的解决方案是什么,或者可以做些什么来使代码工作?(代码应该做的主要功能是打开文件并获取中位数)
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 )
推荐答案
你不能索引 (__getitem__
) _io.TextIOWrapper
对象.您可以做的是使用 list
行.在您的代码中试试这个:
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()
此外,您没有关闭 file
对象,这样会更好:
Also, you aren't closing the file
object, this would be better:
with open(input("Input file name: ", "r") as lst:
print(medianStrat(lst.readlines()))
with
确保文件被关闭,参见 docs一个>
with
ensures that file get closed, see docs
这篇关于类型错误:“_io.TextIOWrapper"对象不可下标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!