前提・実現したいこと
数値計算の研究において、00000050、00000100、00000150のように連番で示された複数のファイルが存在しております。
この連番のファイルを実行の際によみこんで同じく連番で結果を出力したいと考えています。
以前まではシェルを用い手動で
〇〇.out(結果出力の方法がかかれたプログラム) 〇〇(流れ場のファイルの場所) 〇〇(数値計算の格子のファイルの場所) 00000050
のように打ち込んでいました。
計算が多くなるにつれて手動でやる行為がとてもわずらわしくなるため、
自動で00000050、00000100、00000150と実行してくれるプログラムを構想しています。
そこででたのがpythonのsubprocessという手法でした。
しかし、私自身がpythonに精通しておらず、うまく結果がでないので助言をいただけると幸いです。
発生している問題・エラーメッセージ
CompletedProcess(args=['./data_reading_dai.out', '../data', '../data', 'num'], returncode=2, stdout=''│ , stderr="At line 51 of file data_reading_dai.f90 (unit = 11)\nFortran runtime error: Cannot open file│ '/grid_z01_': Permission denied\n\nError termination.
該当のソースコード
python
1import subprocess 2import sys 3from subprocess import PIPE 4iwrit = 50 5nmax = 1000 6 7 8for i in range(iwrit,nmax,iwrit): 9 num = f'{i:08}' 10 cmd =["./data_reading_dai.out","../data" ,"../data","num"] 11 res = subprocess.run(cmd,shell=True,stdout=PIPE,stderr=PIPE,text=True) 12 print(res)
知識が浅いため、文法が理路整然と書かれていないと思います。
お手間でありませんでしたら、プログラムに足りないところをご教授おねがいいたします。