2015-03-11 36 views
5

Nhận lỗi khi tiêu đề cho biết. Đây là traceback. Tôi biết lst [x] đang gây ra vấn đề này nhưng không quá chắc chắn làm thế nào để giải quyết vấn đề này. Tôi đã tìm kiếm google stackoverflow nhưng đã không nhận được giải pháp tôi đang tìm kiếm.LoạiError: đối tượng '_io.TextIOWrapper' không thể ghi số

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 

Đây là mã thực tế

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

Vì vậy, những gì có thể là giải pháp cho vấn đề này hoặc có thể làm gì thay vì để làm cho công việc mã? (Chức năng chính mà mã nên làm là mở một tệp và lấy trung vị)

Trả lời

3

Bạn không thể lập chỉ mục (__getitem__) đối tượng _io.TextIOWrapper. Những gì bạn có thể làm là làm việc với một dòng list. Hãy thử điều này trong mã của bạn:

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

Ngoài ra, bạn không đóng cửa đối tượng file, đây sẽ là tốt hơn:

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

with đảm bảo rằng tập tin được đóng lại, thấy docs

+0

Cảm ơn bạn cho câu trả lời nó đã làm công việc – Eric

Các vấn đề liên quan