1. ホーム
  2. python

[解決済み】TypeError: '_io.TextIOWrapper' オブジェクトが添字可能でない

2022-02-08 22:58:51

質問

タイトルにあるようなエラーが発生します。 以下はそのトレースバックです。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__ ) a _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 は、ファイルが閉じられることを保証します。 ドキュメント