EQE_data と Refl_data の 2 つのファイルを開いています。タブ区切りの 8 つの列を持つ EQE_data の各行を取得し、それに対応する Refl_data の行を見つけてから、データ分析を行い、結果を出力に書き込みます。したがって、EQE_data の各行について、適切な行が見つかるまで Refl_data 全体を検索する必要があります。このコードは 1 回目は成功しますが、その後は毎回 Refl_data に対して同じ結果を出力しています。つまり、Wav1 と QE の正しい列を取得しますが、ネストされた for ループを 1 回だけ実行しているように見えるため、同じ R、Abs、IQE を取得します。これは最初の行では正しいですが、その後は正しくありません。
for line in EQE_data:
try:
EQE = line.split("\t")
Wav1, v2, v3, QE, v5, v6, v7, v8 = EQE
for line in Refl_data:
Refl = line.split("\t")
Wav2, R = Refl
if float(Wav2) == float(Wav1):
Abs = 1 - (float(R) / 100)
IQE = float(QE) / Abs
output.write("%d\t%f\t%f\t%f\t%f\n" % (int(float(Wav1)), float(QE), float(R) / 100, Abs, IQE))
except:
pass