1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
|
---
title: io
---
# IO
[TOC]
## `loadtxt` - load a 2D array from a text file
### Status
Experimental
### Description
Loads a rank-2 `array` from a text file.
### Syntax
`call ` [[stdlib_io(module):loadtxt(interface)]] `(filename, array [, skiprows] [, max_rows] [, fmt] [, delimiter])`
### Arguments
`filename`: Shall be a character expression containing the file name from which to load the rank-2 `array`.
`array`: Shall be an allocatable rank-2 array of type `real`, `complex` or `integer`.
`skiprows` (optional): Skip the first `skiprows` lines. If skipping more rows than present, a 0-sized array will be returned. The default is 0.
`max_rows` (optional): Read `max_rows` lines of content after `skiprows` lines. A negative value results in reading all lines. A value of zero results in no lines to be read. The default value is -1.
`fmt` (optional): Fortran format specifier for the text read. Defaults to the write format for the data type. Setting fmt='*' will specify list directed read.
`delimiter` (optional): Shall be a character expression of length 1 that contains the delimiter used to separate the columns. The default is `' '`.
### Return value
Returns an allocated rank-2 `array` with the content of `filename`.
### Example
```fortran
{!example/io/example_loadtxt.f90!}
```
## `open` - open a file
### Status
Experimental
### Description
Returns the unit number of a file opened to read, to write, or to read and write. The file might be a text file or a binary file.
Text files are opened using a sequential access, while binary files are opened using a streamed access.
### Syntax
`u = ` [[stdlib_io(module):open(function)]] `(filename [, mode] [, iostat])`
### Arguments
`filename`: Shall be a character expression containing the name of the file to open.
`mode` (optional): Shall be a character expression containing characters describing the way in which the file will be used. The available modes are:
| Character | Meaning |
| --------- | ------- |
| `'r'` | open for reading (default) |
| `'w'` | open for writing, truncating the file first |
| `'x'` | open for exclusive creation, failing if the file already exists |
| `'a'` | open for writing, appending to the end of the file if it exists |
| `'+'` | open for updating (reading and writing) |
| `'b'` | binary mode |
| `'t'` | text mode (default) |
The default `mode` is `'rt'` (i.e. open for reading a text file). The `mode` may include one of the four different methods for opening a file (i.e., `'r'`, `'w'`, `'x'`, and `'a'`). These four methods can be associated with the character `'+'` to open the file for updating. In addition, it can be specified if the file should be handled as a binary file (`'b'`) or a text file (`'t'`).
`iostat` (optional): Shall be a scalar of type `integer` that receives the error status of `open`, if provided. If no error exists, `iostat` is zero.
`u`: Shall be a scalar of type `integer` that specifies the unit number associated with the file `filename`.
### Return value
The result is a scalar of type `integer`.
### Example
```fortran
{!example/io/example_open.f90!}
```
## `savetxt` - save a 2D array into a text file
### Status
Experimental
### Description
Saves a rank-2 `array` into a text file.
### Syntax
`call ` [[stdlib_io(module):savetxt(interface)]] `(filename, array [, delimiter])`
### Arguments
`filename`: Shall be a character expression containing the name of the file that will contain the 2D `array`.
`array`: Shall be a rank-2 array of type `real`, `complex` or `integer`.
`delimiter` (optional): Shall be a character expression of length 1 that contains the delimiter used to separate the columns. The default is `' '`.
### Output
Provides a text file called `filename` that contains the rank-2 `array`.
### Example
```fortran
{!example/io/example_savetxt.f90!}
```
## `load_npy`
### Status
Experimental
### Description
Loads an `array` from a npy formatted binary file.
### Syntax
`call ` [[stdlib_io_npy(module):load_npy(interface)]] `(filename, array[, iostat][, iomsg])`
### Arguments
`filename`: Shall be a character expression containing the file name from which to load the `array`.
This argument is `intent(in)`.
`array`: Shall be an allocatable array of any rank of type `real`, `complex` or `integer`.
This argument is `intent(out)`.
`iostat`: Default integer, contains status of loading to file, zero in case of success.
It is an optional argument, in case not present the program will halt for non-zero status.
This argument is `intent(out)`.
`iomsg`: Deferred length character value, contains error message in case `iostat` is non-zero.
It is an optional argument, error message will be dropped if not present.
This argument is `intent(out)`.
### Return value
Returns an allocated `array` with the content of `filename` in case of success.
### Example
```fortran
{!example/io/example_loadnpy.f90!}
```
## `save_npy`
### Status
Experimental
### Description
Saves an `array` into a npy formatted binary file.
### Syntax
`call ` [[stdlib_io_npy(module):save_npy(interface)]] `(filename, array[, iostat][, iomsg])`
### Arguments
`filename`: Shall be a character expression containing the name of the file that will contain the `array`.
This argument is `intent(in)`.
`array`: Shall be an array of any rank of type `real`, `complex` or `integer`.
This argument is `intent(in)`.
`iostat`: Default integer, contains status of saving to file, zero in case of success.
It is an optional argument, in case not present the program will halt for non-zero status.
This argument is `intent(out)`.
`iomsg`: Deferred length character value, contains error message in case `iostat` is non-zero.
It is an optional argument, error message will be dropped if not present.
This argument is `intent(out)`.
### Output
Provides a npy file called `filename` that contains the rank-2 `array`.
### Example
```fortran
{!example/io/example_savenpy.f90!}
```
## `get_line`
### Status
Experimental
### Description
Read a whole line from a formatted unit into a string variable
### Syntax
`call ` [[stdlib_io(module):get_line(interface)]] ` (unit, line[, iostat][, iomsg])`
`call ` [[stdlib_io(module):get_line(interface)]] ` (line[, iostat][, iomsg])`
### Arguments
`unit`: Formatted input unit.
This argument is `intent(in)`.
If `unit` is not specified standard input is used.
`line`: Deferred length character or `string_type` variable.
This argument is `intent(out)`.
`iostat`: Default integer, contains status of reading from unit, zero in case of success.
It is an optional argument, in case not present the program will halt for non-zero status.
This argument is `intent(out)`.
`iomsg`: Deferred length character value, contains error message in case `iostat` is non-zero.
It is an optional argument, error message will be dropped if not present.
This argument is `intent(out)`.
### Example
```fortran
{!example/io/example_get_line.f90!}
```
## Formatting constants
### Status
Experimental
### Description
Formatting constants for printing out integer, floating point, and complex numbers at their full precision.
Provides formats for all kinds as defined in the `stdlib_kinds` module.
### Example
```fortran
{!example/io/example_fmt_constants.f90!}
```
## `get_file` - Read a whole ASCII file into a `character` or a `string` variable
### Status
Experimental
### Description
This subroutine interface reads the entirety of a specified ASCII file and returns its content as a string or an allocatable `character` variable.
The function provides an optional error-handling mechanism via the `state_type` class. If the `err` argument is not provided, exceptions will trigger an `error stop`. The function also supports an optional flag to delete the file after reading.
### Syntax
`call [[stdlib_io(module):get_file(subroutine)]] (filename, file [, err] [, delete=.false.])`
### Class
Function
### Arguments
`filename`: Shall be a character input containing the path to the ASCII file to read. It is an `intent(in)` argument.
`file`: Shall be a `type(string_type)` or an allocatable `character` variable containing the full content of the specified file. It is an `intent(out)` argument.
`err` (optional): Shall be a `type(state_type)` variable. It is an `intent(out)` argument used for error handling.
`delete` (optional): Shall be a `logical` flag. If `.true.`, the file is deleted after reading. Default is `.false.`. It is an `intent(in)` argument.
### Return values
Output variable `file` will contain the full content of the specified file.
Raises `STDLIB_IO_ERROR` if the file is not found, cannot be opened, read, or deleted.
Exceptions trigger an `error stop` unless the optional `err` argument is provided.
### Example
```fortran
{!example/io/example_get_file.f90!}
```
|