2014-03-12 198 views
0

我有一個包含1000行的文件。前15行將是標題信息。從文件讀取特定行並寫入python中的另一個文件

我嘗試做以下: -

1)讀取文件 2)獲得的報頭信息的行數。它將返回15 3)將第1-15行寫入文本文件。

我能夠正確地做1和2,但不是第3步。請輸入任何內容?

下面是我的代碼

#!/usr/bin/python 
import numpy; 
import os; 
import math; 
import cPickle; import time 
from numpy import arange, sign 
import copy 
import re 
import sys 
import string 
import mmap 
head_lines = 0; 
count=1 
fide = open("text1.txt","r"); 
while (count==1): #We skip header 
    head_lines = head_lines+1; 
    line = fide.readline(); 
    if 'END OF HEADER' in line: 
    print 'End of the Header reached' 
    break 
print "hello world" 
print head_lines 
nlines = head_lines; 
key=1; 
while (key < nlines): 
file1 = open("Header.txt","w") 
lines = fide.readline() 
file1.write(lines) 
key = key+1; 
print "done" 
+0

你目前的結果是什麼? –

+0

它印刷的第十六行。標題後面的行 – user252614

+0

我知道你並沒有要求這樣做,但你應該查看[PEP-8](http://legacy.python.org/dev/peps/pep-0008/)並考慮編寫代碼據此 – wnnmaw

回答

1
with open("input.txt") as f1: 
    with open("output.txt","w") as f2: 
     for _ in range(15): 
      f2.write(f1.readline()) 

是,你問什麼?

(在python2.7我認爲你可以做with open('f1') as f1,open('f2','w') as f2: ...

+0

謝謝喬蘭。它幫助我 – user252614

+1

@ user252614:如果答案對您有幫助,您應該注意並/或接受它。 – Emmet

0

有兩個問題在你的代碼:

  1. 什麼都你正在寫的文件中header.txt你會被它覆蓋每當你循環第二個while,因爲你正在重新打開文件,將文件指針放到它的原點,即文件的開始。
  2. 第二個問題是類似的,但在另一個文件fide。打開它將文件指針放到文件的開頭,讀一行直到標題結束。在第二個while循環中,您繼續讀取來自同一個文件指針fide的行,因此您正在讀取下一個nlines

您可以將標題的行存儲在列表中,然後將這些字符串寫入輸出文件。

相關問題