Python ファイルの存在をチェックし、有れば更に指定文字列にある値を抽出して別ファイルに書き出す

 本コードの実施例を次に示します。例えば、下図のように4つのファイルがあるとします(数はいくらでも構わない)。

f:id:HK29:20200501225746p:plain

本コードを実行すると、下図のようなデータを別ファイルへ書き出す仕様です。

f:id:HK29:20200501230104p:plain

■本プログラム

①辞書型のキーと値を同時に取り出す場合:
 for file, target in myTarget_dict.items():
②ファイルが存在し、且つ、0バイトでない場合:
 if os.path.isfile(file) and os.path.getsize(file) !=0:
③=で分割して右側の値を取得したい場合:
 val = row.rsplit("=",1)[1]
④改行コード除去(文字列両端の空白除去)したい場合:
 val = val.strip()

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os def main(): cnt=0 for file, target in myTarget_dict.items(): # 辞書型のキーと値を同時に取り出す if os.path.isfile(file) and os.path.getsize(file) !=0: # ファイルが存在し、且つ、0バイトでない場合 val='' with open(file, 'r') as f1: for row in f1: if row.find(target) != -1: val = row.rsplit("=",1)[1] # =で分割して右側の値を取得 val = val.strip() # 改行コード除去(両端の空白除去) if not val: # 対象の項目がなく値が空の場合 val = 'NaN' with open("out_put.txt", "a") as f2: f2.write(file[:-4] + target + "=" + str(val) + '\n') if (target == 'max_principal_stress') and (val != 'NaN'): if cnt==0: val1 = val cnt = 1 else: if val != 'NaN': val2 = val out_data = float(val1) - float(val2) else: out_data = float(val1) with open("out_put.txt", "a") as f2: f2.write("delta_stress=" + str(out_data) + '\n') else: print(file, ' pass') if __name__ == '__main__': myTarget_dict = {'zzz_dataA_max.txt':'max_principal_stress', 'zzz_dataB_max.txt':'max_principal_stress', 'zzz_dataA_min.txt':'min_principal_stress', 'zzz_dataB_min.txt':'min_principal_stress', } main()

以上

<広告>