loadtxt
- 从文本文件加载二维数组实验性
从文本文件加载一个秩为 2 的 array
。
call
loadtxt (filename, array [, skiprows] [, max_rows] [, fmt])
filename
: 应为一个字符表达式,包含要从中加载秩为 2 的 array
的文件名。
array
: 应为一个可分配的秩为 2 的数组,类型为 real
、complex
或 integer
。
skiprows
(可选): 跳过前 skiprows
行。如果跳过的行数超过现有行数,则将返回一个大小为 0 的数组。默认为 0。
max_rows
(可选): 在 skiprows
行之后读取 max_rows
行内容。负值表示读取所有行。值为零表示不读取任何行。默认值为 -1。
fmt
(可选): 用于读取文本的 Fortran 格式说明符。默认为数据类型的写入格式。将 fmt 设置为 '*' 将指定列表定向读取。
返回一个已分配的秩为 2 的 array
,其中包含 filename
的内容。
program example_loadtxt
use stdlib_io, only: loadtxt
implicit none
real, allocatable :: x(:, :)
call loadtxt('example.dat', x)
! Can also use list directed format if the default read fails.
call loadtxt('example.dat', x, fmt='*')
end program example_loadtxt
open
- 打开文件实验性
返回已打开以进行读取、写入或读写操作的文件的单元号。该文件可能是文本文件或二进制文件。所有文件均使用流式访问打开。
u =
open (filename [, mode] [, iostat])
filename
: 应为一个字符表达式,包含要打开的文件名。
mode
(可选): 应为一个字符表达式,包含描述文件使用方式的字符。可用的模式有
字符 | 含义 |
---|---|
'r' |
打开以进行读取 (默认) |
'w' |
打开以进行写入,首先截断文件 |
'x' |
打开以进行独占创建,如果文件已存在则失败 |
'a' |
打开以进行写入,如果文件存在则追加到文件末尾 |
'+' |
打开以进行更新 (读取和写入) |
'b' |
二进制模式 |
't' |
文本模式 (默认) |
默认 mode
为 'rt'
(即打开以读取文本文件)。mode
可以包含四种不同的文件打开方法之一 (即,'r'
、'w'
、'x'
和 'a'
)。这四种方法可以与字符 '+'
关联以打开文件进行更新。此外,还可以指定文件应作为二进制文件 ('b'
) 还是文本文件 ('t'
) 处理。
iostat
(可选): 应为类型为 integer
的标量,如果提供,则接收 open
的错误状态。如果不存在错误,则 iostat
为零。
u
: 应为类型为 integer
的标量,指定与文件 filename
关联的单元号。
结果是类型为 integer
的标量。
program example_open
use stdlib_io, only: open
implicit none
integer :: u
u = open ('example.dat', 'wt')
write (u, '(a)') 'This is an example for open'
close (u)
end program example_open
savetxt
- 将二维数组保存到文本文件实验性
将一个秩为 2 的 array
保存到文本文件。
call
savetxt (filename, array)
filename
: 应为一个字符表达式,包含将包含二维 array
的文件名。
array
: 应为一个秩为 2 的数组,类型为 real
、complex
或 integer
。
提供一个名为 filename
的文本文件,其中包含秩为 2 的 array
。
program example_savetxt
use stdlib_io, only: savetxt
implicit none
real :: x(3, 2) = 1
call savetxt('example.dat', x)
end program example_savetxt
load_npy
实验性
从 npy 格式的二进制文件加载一个 array
。
call
load_npy (filename, array[, iostat][, iomsg])
filename
: 应为一个字符表达式,包含要从中加载 array
的文件名。此参数为 intent(in)
。
array
: 应为任何秩的可分配数组,类型为 real
、complex
或 integer
。此参数为 intent(out)
。
iostat
: 默认整数,包含加载到文件的状态,成功时为零。这是一个可选参数,如果不存在,则程序将在非零状态下停止。此参数为 intent(out)
。
iomsg
: 延迟长度字符值,包含错误消息(如果 iostat
非零)。这是一个可选参数,如果不存在,则错误消息将被丢弃。此参数为 intent(out)
。
如果成功,则返回一个已分配的 array
,其中包含 filename
的内容。
program example_loadnpy
use stdlib_io_npy, only: load_npy
implicit none
real, allocatable :: x(:, :)
call load_npy('example.npy', x)
end program example_loadnpy
save_npy
实验性
将一个 array
保存到 npy 格式的二进制文件。
call
save_npy (filename, array[, iostat][, iomsg])
filename
: 应为一个字符表达式,包含将包含 array
的文件名。此参数为 intent(in)
。
array
: 应为任何秩的数组,类型为 real
、complex
或 integer
。此参数为 intent(in)
。
iostat
: 默认整数,包含保存到文件的状态,成功时为零。这是一个可选参数,如果不存在,则程序将在非零状态下停止。此参数为 intent(out)
。
iomsg
: 延迟长度字符值,包含错误消息(如果 iostat
非零)。这是一个可选参数,如果不存在,则错误消息将被丢弃。此参数为 intent(out)
。
提供一个名为 filename
的 npy 文件,其中包含秩为 2 的 array
。
program example_savenpy
use stdlib_io_npy, only: save_npy
implicit none
real :: x(3, 2) = 1
call save_npy('example.npy', x)
end program example_savenpy
getline
实验性
将格式化单元中的整行读取到字符串变量中
call
getline (unit, line[, iostat][, iomsg])
call
getline (line[, iostat][, iomsg])
unit
: 格式化输入单元。此参数为 intent(in)
。如果未指定 unit
,则使用标准输入。
line
: 延迟长度字符或 string_type
变量。此参数为 intent(out)
。
iostat
: 默认整数,包含从单元读取的状态,成功时为零。这是一个可选参数,如果不存在,则程序将在非零状态下停止。此参数为 intent(out)
。
iomsg
: 延迟长度字符值,包含错误消息(如果 iostat
非零)。这是一个可选参数,如果不存在,则错误消息将被丢弃。此参数为 intent(out)
。
program example_getline
use, intrinsic :: iso_fortran_env, only: input_unit, output_unit
use stdlib_io, only: getline
implicit none
character(len=:), allocatable :: line
integer :: stat
call getline(input_unit, line, stat)
do while (stat == 0)
write (output_unit, '(a)') line
call getline(input_unit, line, stat)
end do
end program example_getline
实验性
用于以其完整精度打印整数、浮点数和复数的格式化常量。提供 stdlib_kinds
模块中定义的所有种类的格式。
program example_fmt_constants
use stdlib_kinds, only: int32, int64, sp, dp
use stdlib_io, only: FMT_INT, FMT_REAL_SP, FMT_REAL_DP, FMT_COMPLEX_SP, FMT_COMPLEX_DP
implicit none
integer(kind=int32) :: i32
integer(kind=int64) :: i64
real(kind=sp) :: r32
real(kind=dp) :: r64
complex(kind=sp) :: c32
complex(kind=dp) :: c64
i32 = 100_int32
i64 = 100_int64
r32 = 100.0_sp
r64 = 100.0_dp
c32 = cmplx(100.0_sp, kind=sp)
c64 = cmplx(100.0_dp, kind=dp)
print "(2("//FMT_INT//",1x))", i32, i64 ! outputs: 100 100
print FMT_REAL_SP, r32 ! outputs: 1.00000000E+02
print FMT_REAL_DP, r64 ! outputs: 1.0000000000000000E+002
print FMT_COMPLEX_SP, c32 ! outputs: 1.00000000E+02 0.00000000E+00
print FMT_COMPLEX_DP, c64 ! outputs: 1.0000000000000000E+002 0.0000000000000000E+000
end program example_fmt_constants