2017-04-06 3 views
1

大きなファイルを読み込んでいて、その一部を新しいファイルに書きたいと思っています。出力ファイルのスライシング

パターン 'CARTESIAN COORDINATES'がこのファイルに2回表示され、新しいファイルで2番目のオカレンスの前にすべてを省略します。

#!/usr/bin/env python 
import string,sys 
import numpy as np 
from numpy import * 

with open("101.out", "r") as f: 
    content = [] 
    for line in f: 
     content.append(line) 

g = open('101.xyz', 'w') 


#write the relevant stuff 


f.close() 

答えて

1

だから私は101.outファイルを仮定しているようなものになります:これまでのところ私は持っている

not to be written 
not to be written 
CARTESIAN COORDINATES 
not to be written 
CARTESIAN COORDINATES 
written 
written 
written 

をそして、あなたは二CARTESIAN COORDINATES後のすべてのものは、私が正しくあなたを理解した場合とします

#!/usr/bin/env python 
import string,sys 
import numpy as np 
from numpy import * 

with open("101.out", "r") as f: 
    content = [] 
    occurances = 0 
    for line in f: 
     if occurances >= 2: 
      content.append(line) 
     if 'CARTESIAN COORDINATES' in line: 
      occurances += 1 

with open('101.xyz', 'w') as f: 
    for item in content: 
     f.write(item) 

これらのインポートは作業には必須ではありません。元のスニペットに含まれていたので、私はそこに残しました。

これは101.xyzに出力:

written 
written 
written