2016-10-17 31 views
0

ファイルから行を読み込み、特定の行番号から別のファイルに書きたい。私はこのスクリプトを持っています。このスクリプトはすべての読み込み行を書き込みます。私は最初の4行をスキップし、残りを別のfilsに書き込む必要があります。何か案は?Pythonはファイルから行を読み込み、特定の行番号から別のファイルに書き込む

for k in range (0,16): 
    print 'k =',k 
    from abaqus import session 
    k=k+1 
    print k 
    f1 = open('VY_NM_VR_lin_o1_bonded_results_{k}.txt'.format(k=k)) 
    #with open('VY_{k}'.format(k=k), 'a') as f1: 
    lines = f1.readlines() 
    for i, line in enumerate(lines): 
     #print i  
     print(repr(line))    
     #if line.startswith(searchquery): 
     f2.write(line) 
     #f2.write('%s'%listc + "\n") 
     i = i+1 
     #else : 
     # i = i+1 
     #os.close(f1) 
    f1.close() 

f2.close() 
+2

なぜ線をスライスしないのですか? 'for line [3:]: – sytech

+0

python forループでは、" continue "を使ってループの次の繰り返しにジャンプすることができます。あなたはそれを使っていくつかの行を読み飛ばすことができますか?あなたの "k"は行番号に対応していますか? –

+0

@Gator_Pythonとは何か、または「i <4:continue中」 –

答えて

4

itertools.islice is designed for this

import itertools 

with open('VY_NM_VR_lin_o1_bonded_results_{k}.txt'.format(k=k)) as f1: 
    # islice w/4 & None skips first four lines of f1, then generates the rest, 
    # and writelines can take that iterator directly to write them all out 
    f2.writelines(itertools.islice(f1, 4, None)) 

あなたがwritelinesをスキップして戻って行く、あなたが行くようにラインを処理する必要がある場合は、次のいずれかの方法を

for line in itertools.islice(f1, 4, None): 
     ... do stuff with line ... 
     f2.write(line) 

、あなたも見ることはありません最初の4行(Pythonはそれらを読み、シームレスにそれらを破棄しています)。

+0

注:これはまた、元のコードを改善するだけで、すべての行をメモリに格納せずに、再度書き出すことができます。 'file.readlines()'はコードの匂いです。ここにあるほとんどのポスターは実際には必要ではなく、ファイルがすでにイテレータであることを理解しておらず、行単位の処理がはるかにスケーラビリティがある場合に、不必要に巨大なリストを作成する可能性があります。このソリューションは、一度に1行だけを読み込み、一度に1行を書き込むので、ファイルが巨大であるときにピーク時のメモリ使用量が大幅に低下します。 – ShadowRanger

+0

ありがとうございます。私はどのようにして書式を変更することができますか知っていますか?私は2つの列の値を読み、値の間にカンマ「、」を追加したいだけです。 – GeMa

+0

@GeMa:もしあなたがCSVを書いているのであれば、出力ファイルを['csv.writer'](https://docs.python.org/3/library/csv.html#csv.writer)にラップすることをお勧めします。 'writerow'呼び出しに値の' tuple'/'list'を渡します。提供されているあなたのコードは、値のペアがどこから来ているかを示すものではありません。 – ShadowRanger

関連する問題