3

截至目前,我正在打开一个扩展名为 .txt 的文件并在其上运行 fortran 代码。但是,如果我希望程序在具有各种扩展名的文件夹中的所有文件上运行。我怎么做?

4

2 回答 2

4

如果您被 FORTRAN77 卡住,一种可能的解决方案是从标准输入中读取输入文件名并相应地打开该文件:

character(len=9999) inputFile

read(unit=5,fmt=*)inputFile
open(unit=21,file=trim(inputFile))

然后,通过 shell 脚本循环在所有文件上执行您的程序:

for file in *;do
    echo $file | myFortranProgram
done

如果您有更现代的编译器,则可以使用 Fortran 2003 功能GET_COMMAND_ARGUMENT

character(len=9999) :: inputFile 

call GET_COMMAND_ARGUMENT(1,VALUE=inputFile)
open(unit=21,file=trim(inputFile))

然后如上所述通过循环执行您的程序:

for file in *;do
    ./myFortranProgram $file
done   

请记住,在循环文件时,您有责任确保您的 Fortran 程序能够处理这些文件,并且它能够处理异常,例如目录或其他一些文件扩展名,或者相应地从 shell 循环特定文件。

于 2012-08-09T19:02:52.460 回答
2

我通常创建一个包含我想要处理的文件列表的文件,例如,在 Unix 操作系统上使用lsfind命令。这也允许使用编辑器修改列表。然后我设计 Fortran 程序从该文件中读取文件名,然后依次打开、处理和关闭这些文件。

如果您可以根据模式预测可能的文件名,则可以使用 INQUIRE 语句测试是否存在具有特定名称的文件。这可用于遍历所有可能的文件名。根据有多少可能的文件,这可能可行,也可能不可行。

于 2012-08-09T18:55:53.690 回答