[英]How to read a file from a relative path in Fortran?
假設我的目錄設置如下(例如):
我將如何 go 關於使用相對路徑在我的 read.f95 文件中讀取 file.txt ?
我嘗試使用相對路徑作為
open(10, file='./Files/file.txt')
和
open(10, file='../Files/file.txt')
但我在兩種方式上都遇到了路徑錯誤。 我找到了這個問題,但問題是文件名太長,這不是我要問的。
假設你有這樣的結構:
.
|-- code
| |-- relative
| `-- relative.F90
`-- data
`-- data.dat
並且您想從包含以下內容的目錄運行代碼: code
和data
。 在這種情況下,您始終可以連接當前目錄的位置和數據的位置:
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.