元のファイルから新しいファイルにデータをコピーしていて、変更したい文字列に新しい値をランダムに割り当てています。何らかの理由で、私が持っているコードは、私の文字列の1つだけを置き換えます。私は4つの異なるfiledata.replace行を4つのf.writeコマンドに対応させて書きましたが、うまくいかないでしょう。私もfiledata.replace複数の引数を1つのコマンドで与えることを試みたが、それも問題を作成します。複数の文字列をファイルに置き換えて書き込む方法は?
import numpy as np
import random
import math
import shutil
for i in range (1,5):
shutil.copy('template.par', 'a.par')
a = str(random.uniform(0.00000000000000, 0.0001)) #sigma0
b = str(random.uniform(0.00000000000000, 1)) #sigmaslope
c = str(random.uniform(0.05000000000000, 0.1)) #viscosity
d = str(random.uniform(0.00000000000000, 0.00001)) #aspectratio
f = open('a.par','r')
filedata = f.read()
f.close()
newdata = filedata.replace("6.3661977237e-4", a)
newdata = filedata.replace("0.0", b)
newdata = filedata.replace("0.05", c)
newdata = filedata.replace("1e-5", d)
f = open('a.par','w')
f.write(newdata)
f.close()
範囲線のfor iを無視します。 – dlsj
それぞれの 'newdata = ...'行の間に2行を追加します。 'print(newdata)'、 'print(filedata)' – fdsa
@fdsaこれはまだ1行だけを置き換えます。 – dlsj