2015-03-11 32 views
5

Başlığın söylediği gibi hatayı alıyorum. İşte geri izleme. Biliyorum ki [x] bu soruna neden oluyor ama bunu nasıl çözeceğinden emin değilim. Ben zaten google + stackoverflow aradım ama aradığım çözümü almadım.TypeError: '_io.TextIOWrapper' nesnesi abone değil

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 

İşte gerçek kod

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

Peki bu sorunun çözümü olabilir veya hangi kodun çalışması için yerine yapılabilir mi? (Kodun yapması gereken ana işlev bir dosya açmak ve medyanı almaktır)

cevap

3

_io.TextIOWrapper nesnesini dizine ekleyemezsiniz (__getitem__). Yapabilecekleriniz, list satırında çalışmaktır. kodunuzda bu deneyin: Ayrıca

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

, sen file nesneyi kapama değil bu daha iyi olurdu:

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

with dosya kapalı olsun sağlar, docs

+0

teşekkür ederiz bkz cevap için bu işi yaptı – Eric

İlgili konular