gpt4 book ai didi

python - 在 Python 脚本中运行 Fortran 可执行文件

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:25 24 4
gpt4 key购买 nike

我正在编写具有以下目标的 Python 脚本:

  1. 从当前工作目录开始,将目录切换到子目录'A'
  2. 对 fort.4 文件进行微调
  3. 运行 Fortran 二进制文件(其语法为 ../../../../ 一直持续到我找到包含二进制文件的文件夹);回到 2. 直到我的特定目标完成,然后
  4. 从子目录返回到父目录,然后进入另一个子目录并返回到 2。直到我遍历了所有有问题的文件夹。

代码进展顺利。我不得不严重依赖 Python 的操作系统模块来进行目录工作。但是,我从来没有任何经验 a) 使用 python 对文件进行微调和 b) 运行可执行文件。你们能给我一些关于 Python 模块的想法,指导我使用类似的堆栈源等,或者提供可以实现的方法吗?我知道这是一个模糊的问题,所以如果您不明白我在问什么,请问我,我会详细说明。此外,我必须对此 fort.4 文件所做的更改本质上是重复的;它们都发生在文件中的相同位置。

干杯

编辑:整个 fort.4 文件:

file_name           
movie1.dat !name of a general file the binary reads
nbr_box ! line3-8 is general info
2
this_box
1
lrdf_bead
.true.
beadid1
C1 !this is the line I must change
beadid2
F4 !This is a second line I must change
lrdf_com
.false.
bin_width
0.04
rcut
7

真的,例如,我需要将“C1”更改为“C2”。所做的更改非常微不足道,但我必须强调一个事实,即主要的 fortran 可执行文件读取这个 fort.4,以及我已经创建的这个 movie1.dat 文件。希望这有帮助

最佳答案

好的,这里有一些重要的事情,首先我们需要能够管理我们的 cwd,为此我们将使用 os 模块

import os

每当方法对文件夹进行操作时,将目录更改为文件夹并返回到父文件夹很重要。这也可以通过 os 模块来实现。

def operateOnFolder(folder):
os.chdir(folder)
...
os.chdir("..")

现在我们需要为每个目录做一些方法,这是自带的,

for k in os.listdir(".") if os.path.isdir(k):
operateOnFolder(k)

最后,为了对一些预先存在的 FORTRAN 文件进行操作,我们可以使用内置文件运算符。

fileSource = open("someFile.f","r")
fileText = fileSource.read()
fileSource.close()
fileLines = fileText.split("\n")
# change a line in the file with -> fileLines[42] = "the 42nd line"
fileText = "\n".join(fileLines)
fileOutput = open("someFile.f","w")
fileOutput.write(fileText)

您可以从 source.f90::

创建并运行可执行文件 output.fx
subprocess.call(["gfortran","-o","output.fx","source.f90"])#create
subprocess.call(["output.fx"]) #execute

关于python - 在 Python 脚本中运行 Fortran 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com