2017-04-16 328 views
1

用下面的代碼我想>打開文件>讀取內容並去掉非必需的行>然後將數據寫入文件並讀取文件以進行下游分析。如何讀取/打印(_io.TextIOWrapper)數據?

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數據和大熊貓或其他模塊做進一步的處理,但我遇到了一個問題,同時讀取數據(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 
+0

請問您能具體嗎?我嘗試在代碼的第二行執行'f2.read()',同時打開(...)爲f2.read()',但它不起作用。 – everestial007

回答

4

文件已關閉(在前面的with塊結束),所以你不能做任何更多的文件。要重新打開文件,請創建另一個語句並使用read屬性讀取文件。

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

我試着不把'f2.close()'放在for循環的末尾,但它也不起作用。我已經知道你有什麼建議。我只是不想一次又一次地讀取文件。想知道這些代碼是否缺少一些東西。 – everestial007

+0

您必須關閉文件才能保存文件,重新打開它就是* only * *方式。當塊結束時,你的'with'塊將會自動關閉文件。無論是否添加.close()或不是 – abccd

+1

@ everestial007:'f2.close()'是多餘的,因爲前面的'with'會自動完成。 – martineau