2017-10-07 33 views
1

Abaqus入力ファイルから要素剛性行列を抽出します。 次のようにファイルの最後の行の内容は次のとおりです。別の行の前に特定の行を挿入する方法、Pythonを使ったテキストファイルに行を挿入する方法はありませんか?

** 
** OUTPUT REQUESTS 
** 
*Restart, write, frequency=0 
** 
** FIELD OUTPUT: F-Output-1 
** 
*Output, field, variable=PRESELECT 
*End Step 

入力ファイルから要素剛性行列を抽出するために、我々は、入力ファイルに次の行をすべきで、(前の行、すなわち(*エンドステップ))ライン:

*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER 

私はAbaqusのソフトウェアのスクリプト言語であるPython言語を通じて私の入力ファイルに次の行を追加します。 このコードをテストするために次のコードを別のテキストファイルに入れてみますが、これらの行を実行した後、2行の間に空白行を挿入します(次のコードではこのコードは、あなたが必要とする正確に何を行います

import fileinput 

processing_foo1s = False 

for line in fileinput.input('Input8.inp', inplace=1): 
    if line.startswith('*Output,'): 
    processing_foo1s = True 
    else: 
    if processing_foo1s: 
     print ('foo bar') 
    processing_foo1s = False 
    print (line,) 

答えて

2

)、他のコードは、空行を作成することを示したい:

with open('Input8.inp', 'r+') as f: 
    _text = '' 
    for line in f: 
     if line.startswith('*End Step'): 
      _text += '*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER\n' 

     _text += line 

    f.seek(0) 
    f.write(_text) 
    f.truncate() 

の説明:読み書きモードで

  1. ファイルを開きます。
  2. 一時変数を作成します
  3. ラインで
  4. 反復ファイルの行
  5. 「*終了ステップ」で始まる行が見つかった場合 -
  6. 追加反復ラインtemp変数
  7. ゴーへの一時変数にカスタムの行を追加しますファイルの先頭
  8. 書き込みの一時変数、それに
  9. は、ファイルの残りの行の削除(存在しないはずですが、ケースには、彼らは何とか繰り返さない場所 - それらを削除)
+0

親愛なるヤロスラフ、私は線((* Output))で動作しません。上記のコードは単なる例です。 – Samanradnia

+0

私は((* ELEMENT MATRIX OUTPUT、ELSET = m、STIFFNESS = YES、MASS = NO、OUTPUTFILE = USER))行をbefor the((* End Step) * End Step))行。あなたが言ったコードを修正してください。 – Samanradnia

+0

@ Samanradnia、私はコードごとに説明を追加しましたが、あなたは本当にあなたが望む結果を得るためにそれを変更する必要があるかわからないのですか? –

関連する問題