1. ホーム
  2. python

[解決済み] ( _io.TextIOWrapper )データの読み出し/印刷を行うには?

2022-03-01 08:56:43

質問

以下のコードで、ファイルを開き、内容を読み、必要ない行を削除し、データをファイルに書き込むと同時に、下流の解析のためにファイルを読みたいと思います。

with open("chr2_head25.gtf", 'r') as f,\
    open('test_output.txt', 'w+') as f2:
    for lines in f:
        if not lines.startswith('#'):
            f2.write(lines)
    f2.close()

さて、f2データを読み込んで、pandasや他のモジュールでさらに処理を行いたいのですが、データを読み込む際に問題が発生します( f2 ).

data = f2 # doesn't work
print(data) #gives
<_io.TextIOWrapper name='test_output.txt' mode='w+' encoding='UTF-8'>

data = io.StringIO(f2)  # doesn't work
# Error message
Traceback (most recent call last):
  File "/home/everestial007/PycharmProjects/stitcher/pHASE-Stitcher-Markov/markov_final_test/phase_to_vcf.py", line 64, in <module>
data = io.StringIO(f2)
TypeError: initial_value must be str or None, not _io.TextIOWrapper

解決方法は?

ファイルがすでに閉じられている(前の with ブロックが終了するため)、これ以上ファイルに対して何もすることができません。ファイルを再び開くには、別のwithステートメントを作成し、その中で read 属性でファイルを読み込むことができます。

with open('test_output.txt', 'r') as f2:
    data = f2.read()
    print(data)