簡體   English   中英

如何從 Fortran 中的相對路徑讀取文件?

[英]How to read a file from a relative path in Fortran?

假設我的目錄設置如下(例如):

  • 主要的
    • 腳本
      • 讀取.f95
    • 文件
      • 文件.txt

我將如何 go 關於使用相對路徑在我的 read.f95 文件中讀取 file.txt ?

我嘗試使用相對路徑作為

open(10, file='./Files/file.txt')

open(10, file='../Files/file.txt')

但我在兩種方式上都遇到了路徑錯誤。 我找到了這個問題,但問題是文件名太長,這不是我要問的。

假設你有這樣的結構:

.
|-- code
|   |-- relative
|   `-- relative.F90
`-- data
    `-- data.dat

並且您想從包含以下內容的目錄運行代碼: codedata 在這種情況下,您始終可以連接當前目錄的位置和數據的位置:

program relative

   implicit none 

   real :: x, y

   character (len=255) :: cwd
   call getcwd(cwd)

   open (10, file = trim(cwd)//'/data/data.dat', status = 'old')
   read (10, *) x, y
   close(10)
   write(*,  *) x, y

end program

而數據文件: data.dat看起來如下

0.1 0.2

一旦你運行它,你會得到你想要的:

> ./code/relative
  0.100000001      0.200000003

但是,您必須格外小心這種方法。 它只能在某些位置工作 - 只要data/data.dat存在,它就會工作。 如果您將作業提交到批處理中,它可能會很有用。 假設你不知道你的代碼最終會在哪里(就顯式位置而言)。 在這種情況下,您無法對其進行硬編碼——這毫無意義。 因此,您有兩個選擇:您可以使用一些包裝腳本並通過 arguments 將位置傳遞到您的代碼中,或者,您可以確保目錄結構看起來像您想要的那樣,並且您知道一切都已到位。 在這種情況下,使用getcwd非常有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM