foil2w.exe
翼型から空力計算を行うexe 呼び出しを実行する Windows 用のコードを作成する必要があります。これには、多くの変数をexe
含む入力テキスト ファイル ( ) があります。dfile_bl
次に、実行するたびにそれを開いて、値 (迎角) を 0 から 16 に変更し、再度実行する必要があります。aerola.dat
また、結果を含む最後の行を保存する必要がある場所と呼ばれる出力ファイルを生成します。私がやろうとしているのは、プロセスを自動化し、プログラムを実行し、結果を保存して角度を変更し、再度実行することです。私はLinuxでそれを行い、sed
コマンドを使用して線を見つけて角度に置き換えました。今、私は窓のためにそれをしなければなりません、そして私はどのように始めるべきか分かりません。Linux用に作成したコードは正常に動作します:
import subprocess
import os
input_file = 'dfile_bl'
output_file = 'aerloa.dat'
results_file = 'results.txt'
try:
os.remove(output_file)
os.remove(results_file)
except OSError:
pass
for i in [0, 2, 4, 6, 8, 10, 12, 14, 16]:
subprocess.call('./exe', shell=True)
f = open(output_file, 'r').readlines()[-1]
r = open(results_file, 'a')
r.write(f)
r.close()
subprocess.call('sed -i "s/%s.00 ! ANGL/%s.00 ! ANGL/g" %s' % (i, i+2, input_file), shell=True)
subprocess.call('sed -i "s/18.00 ! ANGL/0.00 ! ANGL/g" %s' % input_file, shell=True)
dfile は次のようになります。
3.0 ! IFOIL
n2412aN
0.00 ! ANGL
1.0 ! UINF
300 ! NTIMEM
編集:今はうまくいっています
import subprocess
import os
import platform
input_file = 'dfile_bl'
output_file = 'aerloa.dat'
results_file = 'results.txt'
OS = platform.system()
if OS == 'Windows':
exe = 'foil2w.exe'
elif OS == 'Linux':
exe = './exe'
try:
os.remove(output_file)
os.remove(results_file)
except OSError:
pass
for i in [0, 2, 4, 6, 8, 10, 12, 14, 16]:
subprocess.call(exe, shell=OS == 'Linux')
f = open(output_file, 'r').readlines()[-1]
r = open(results_file, 'a')
r.write(f)
r.close()
s = open(input_file).read()
s = s.replace('%s.00 ! ANGL' % str(i), '%s.00 ! ANGL' % str(i+2))
s2 = open(input_file, 'w')
s2.write(s)
s2.close()
# Volver el angulo de dfile_bl a 0
s = open(input_file).read()
s = s.replace('%s.00 ! ANGL' % str(i+2), '0.00 ! ANGL')
s2 = open(input_file, 'w')
s2.write(s)
s2.close()
b