タイトルが言うようにエラーを取得します。これがトレースバックです。 lst [x]がこの問題の原因であることはわかっていますが、この問題の解決方法はわかりません。私はすでにgoogle + stackoverflowを検索しましたが、探している解決策が見つかりませんでした。
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))
では、この問題の解決策は何でしょうか、それともコードを機能させるために代わりに何ができるでしょうか? (コードが行うべき主な機能は、ファイルを開いて中央値を取得することです)
インデックスを作成することはできません(__getitem__
)_io.TextIOWrapper
オブジェクト。あなたができることは、list
行を操作することです。あなたのコードでこれを試してください:
lst = open(input("Input file name: "), "r").readlines()
また、あなたはfile
オブジェクトを閉じていません。これはより良いでしょう:
with open(input("Input file name: ", "r") as lst:
print(medianStrat(lst.readlines()))
with
はファイルが確実に閉じられるようにします。 docs を参照してください