【问题标题】:Fortran runtime error: Cannot open file (No such file or directory)Fortran 运行时错误:无法打开文件(没有这样的文件或目录)
【发布时间】:2016-07-20 22:34:08
【问题描述】:

免责声明:我正在使用一个用 FORTRAN 编写的程序,但我在使用它时遇到了问题。我根本不精通 FORTRAN。如果这是一个愚蠢的问题,我提前道歉。

我收到以下错误:

At line 1494 of file phot_star_fit18.f90 (unit = 45)
    Fortran runtime error: Cannot open file '/Users/.../SSPFITTING/GASFIT/ssp/ssplist.d': No such file or directory

Error termination. Backtrace:
#0  0x10a0a9729
#1  0x10a0aa3f5
#2  0x10a0aab59
#3  0x10a16f70a
#4  0x10a16f950
#5  0x10a09815c
#6  0x10a09ee5e

第 1494 行是:

open(unit=45,file=splist,status='old',action='read')

/Users/.../SSPFITTING/GASFIT/ssp/ 目录中,我有以下与ssplist 相关的文件。某事:

ssplist.dat2
ssplist.dat04
ssplist.dat5
ssplist.dat08

谁能解释为什么这会失败以及为什么代码需要ssplist.d 文件?

【问题讨论】:

  • ... 很奇怪。可能是..
  • 它在寻找ssplist.d 而不是.dat。或任何其他的东西
  • 请向我们展示splist 的声明和赋值/初始化,因为它似乎不是您所期望的。
  • @francescalus 我一定会把这个添加到我的问题中。
  • 我怀疑变量splist 太短,无法容纳整个文件名。

标签: fortran


【解决方案1】:

问题中没有足够的数据来确定这是否真的是问题所在,但我非常怀疑:

它试图打开一个名为/Users/.../SSPFITTING/GASFIT/ssp/ssplist.d 的文件,该文件不存在。现在有几个文件ssplist.d 开头,但没有一个文件的全名。

如果您尝试将字符串分配给固定长度的 char 变量,则会删除最后一个字符:

program string1
    implicit none
    character(len=8) :: h
    h = "Hello World"
    print *, h
end program string1

打印:

Hello Wo

我的建议是搜索你的字符变量 splist 的声明,我怀疑它看起来像这样:

character(len=xx) :: splist

但也可能更老:

character*xx splist

或类似的东西,其中xx 是一个数字。这个xx 至少需要是/Users/.../SSPFITTING/GASFIT/ssp/ssplist.dat08 中的字符数(我还怀疑你已经用... 替换了一长串子目录,所以我不能告诉你有多少个字符。)我的怀疑是不是这个数字有点短。

【讨论】:

  • 鉴于我的问题相当模糊,我将接受此作为最佳猜测答案。我从这个答案中意识到,splist 的字符长度确实没问题,设置为 len=64 ......是我的字符串超过了这个!稍微缩短该文件的目录就足以解决此问题。
【解决方案2】:

斜线是否倾斜正确? 您可以查询...

LOGICAL :: Existent = .FALSE.
...
INQUIRE(FILE='somefile', EXIST=Existent)
IF(Existent) THEN
  OPEN(...
  READ(...
  CLOSE(...
ELSE
  WRITE(*,10) SomeFile(1:??)
10 FORMAT(" Cannot find file="',A,'"')
ENDIF

write 语句显示的主要内容是不存在的内容。 如果包含文件名的字符串限制为 80 个字符,并且您正在截断“at1”,那么这可以让您深入了解。

chw21 的说法是啰嗦。

【讨论】:

  • 但是他会得到 FALSE 并且仍然有同样的问题......如果这是答案,我们可以将其作为副本关闭,这已经在这里好几次了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2015-02-25
  • 2019-07-27
  • 2013-12-15
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多