【问题标题】:How to run FORTRAN program on all the files in a folder?如何对文件夹中的所有文件运行 FORTRAN 程序?
【发布时间】:2012-08-09 17:51:38
【问题描述】:

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

【问题讨论】:

    标签: fortran fortran77


    【解决方案1】:

    如果您被 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 循环特定文件。

    【讨论】:

    • 大多数“旧”f77 编译器通过 iargc / getarg 函数支持此功能。
    • @george 当然,但这些不是标准的一部分,如果有人关心可移植性,不建议使用。
    【解决方案2】:

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

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

    【讨论】:

    • 我已经在DOS下执行了ls命令,得到了当前文件夹中所有文件的列表,这样程序就可以读取它们的名称,并且可以处理所有这些文件。但是,我在所有文件上成功运行程序时遇到问题:CHARACTER :: FILE_NAME, FILE_NAME2 OPEN(UNIT=10, FILE='print.txt') DO READ(10,'(A)', END= 700) FILE_NAME FILE_NAME2 = ('MODIFIED' // FILE_NAME // '.txt') !!打开要读取的现有文件,然后程序将其写入第二个修改文件!打开(UNIT=1,FILE=FILE_NAME)打开(UNIT=2,FILE=FILE_NAME2)
    • 你真的应该删除这条评论,因为你现在问了另一个问题。没有人会花很多时间尝试阅读评论中的程序。
    • 相反,我认为您最好将此添加到上述问题中。你说你“有问题”。有什么问题?
    • 我期望在处理名为“MODIFIED...txt”后将多个文件写入文件夹的输出。但是,到目前为止,我得到的唯一输出是 2 个 0KB 名称为“3”和“M”的文件。不知道从哪里开始。该程序成功编译并且能够执行。
    • “test.txt”文件包含当前文件夹中所有要输入到fortran程序的读取函数中的文件的名称。目前,为了测试它,我有 2 个文件,我得到 2 个文件作为输出,除了它们是空的并且名称很奇怪
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2011-05-02
    • 2021-12-31
    相关资源
    最近更新 更多