05-Fortran基础--Fortran文件操作

05-Fortran基础--Fortran文件操作

  • 0 引言
  • 1 文件操作有关的关键字介绍
    • 1.1 打开文件(OPEN)
    • 1.2 文件关闭(CLOSE)
    • 1.3 文件查询(INQUIRE)
    • 1.3 文件读写(read/write)
    • 1.4 文件操作符(BACKSPACE/DELETE/FIND/REWIND/FLUSH)
  • 2 结语


0 引言

  利用fortran进行文件的常见操作包括文件读写、文件打开、文件关闭和一些文件有关的关键字。

1 文件操作有关的关键字介绍

1.1 打开文件(OPEN)

  在Fortran中,使用open语句可以打开一个文件,以便进行读取、写入或修改操作。这个语句的一般形式如下:

open(unit=unit_number, file=file_name, status=status_specifier, action=action_specifier, &access=access_specifier, iostat=iostat_variable, [other_options])

其中:

  • unit_number 是一个整数变量,用来标识文件。
  • file_name 是一个字符串,表示要打开的文件的路径和名称。
  • status_specifier 指定文件的状态,可以是’old’(打开一个已存在的文件)、‘new’(创建一个新文件)、‘replace’(替换一个已存在的文件)或’unknown’(如果文件不存在则创建一个新文件)。
  • action_specifier 指定文件的操作,可以是’read’(读取文件)、‘write’(写入文件)、‘readwrite’(读写文件)或 ‘scratch’(临时文件)。
  • access_specifier 指定文件的访问权限,可以是 ‘sequential’(顺序访问)或 ‘direct’(直接访问)。
  • iostat_variable 是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。
  • [other_options] 包括其他选项,如form(指定文件格式)、action(指定文件操作)等。

  下面是一个简单的例子,演示了如何使用open语句来打开一个文件以供写入:

program open_exampleimplicit noneinteger :: unit_number, icharacter(len=50) :: file_name! 定义文件名和文件单元号file_name = 'data.txt'unit_number = 10! 打开文件以供写入open(unit=unit_number, file=file_name, status='unknown', action='write')! 写入数据到文件do i = 1, 10write(unit_number, '(I2)') iend do! 关闭文件close(unit_number)end program open_example

  执行之后会生成一个文件,文件内容如下:

  这个例子中,程序打开一个名为’data.txt’的文件以供写入,然后写入数字1到10到文件中,最后关闭文件。

1.2 文件关闭(CLOSE)

  在Fortran中,使用close语句可以关闭已经打开的文件。关闭文件后,将释放与该文件相关联的系统资源,并确保文件的内容被正确写入磁盘。close语句的一般形式如下:

close(unit=unit_number, iostat=iostat_variable, [other_options])

其中:
unit_number 是一个整数变量,表示要关闭的文件的单元号。
iostat_variable 是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。
[other_options] 包括其他选项,如status(指定关闭文件的行为)等。

  下面是一个示例,演示了如何使用close语句关闭一个已经打开的文件:

program close_exampleimplicit noneinteger :: unit_number, icharacter(len=50) :: file_name! 定义文件名和文件单元号file_name = 'data.txt'unit_number = 10! 打开文件以供写入open(unit=unit_number, file=file_name, status='unknown', action='write')! 写入数据到文件do i = 1, 10write(unit_number, '(I2)') iend do! 关闭文件close(unit_number)end program close_example

  在这个例子中,文件"data.txt"被打开并写入数据后,通过close语句关闭了文件。

1.3 文件查询(INQUIRE)

  在Fortran中,可以使用inquire语句来查询文件的属性,比如文件是否存在、文件大小等信息。inquire语句的一般形式如下:

inquire([inquire_spec], [iostat=iostat_variable], [other_options])

其中:
inquire_spec 是一个可选的查询说明符,用于指定要查询的属性。可以是file(文件名)、unit(文件单元号)或 iostat(指定输入/输出操作的状态码)。
iostat_variable 是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。
[other_options] 包括其他选项,如exist(文件是否存在)、opened(文件是否已打开)等。

  下面是一个示例,演示了如何使用inquire语句查询文件是否存在:

program inquire_exampleimplicit nonecharacter(len=50) :: file_namelogical :: file_exists! 定义文件名file_name = 'data.txt'! 查询文件是否存在inquire(file=file_name, exist=file_exists)! 查询文件是否打开!inquire(file=file_name, opened=file_opened)! 输出结果if (file_exists) thenprint*, '文件存在'elseprint*, '文件不存在'end ifend program inquire_example

  在这个例子中,程序使用inquire语句查询名为’data.txt’的文件是否存在,并根据查询结果输出相应的消息。

1.3 文件读写(read/write)

  在Fortran中,文件的读取和写入操作通常使用read和write语句来完成。下面是它们的详细介绍以及示例:

1.3.1 读取文件 (read)

read(unit_number, [format], [iostat=iostat_variable], [other_options]) [input_list]

unit_number:整数变量,表示要读取数据的文件单元号。
format:可选参数,用于指定输入数据的格式。可以是一个格式化的I/O描述符,例如’(I5)'表示读取一个5位整数。
iostat_variable:可选参数,整数变量,用于存储读取操作的状态码。
[other_options]:其他选项,如err(指定错误处理)等。
[input_list]:读取数据的变量列表,根据format指定的格式进行解析。

示例:

program read_exampleimplicit noneinteger :: unit_number, datainteger :: iostat_var! 打开文件unit_number = 10open(unit=unit_number, file='data.txt', status='old', action='read')! 从文件读取数据read(unit_number, *) data! 输出读取的数据print*, '读取的数据:', data! 关闭文件close(unit_number)end program read_example

1.3.2 写入文件 (write)

write(unit_number, [format], [iostat=iostat_variable], [other_options]) [output_list]

unit_number:整数变量,表示要写入数据的文件单元号。
format:可选参数,用于指定输出数据的格式。
iostat_variable:可选参数,整数变量,用于存储写入操作的状态码。
[other_options]:其他选项,如err(指定错误处理)等。
[output_list]:待写入数据的变量列表。

示例:

program write_exampleimplicit noneinteger :: unit_number, datainteger :: iostat_var! 准备要写入的数据data = 123! 打开文件unit_number = 10open(unit=unit_number, file='output.txt', status='replace', action='write')! 将数据写入文件write(unit_number, *) data! 关闭文件close(unit_number)end program write_example

  以上示例演示了如何使用read和write语句读取和写入文件数据。在实际使用中,可以根据需要指定格式化的输入/输出描述符,以便正确解析和生成文件数据。

1.4 文件操作符(BACKSPACE/DELETE/FIND/REWIND/FLUSH)

  在Fortran中,BACKSPACE、DELETE、FIND和REWIND是文件操作的关键字,用于对已打开的文件进行定位和控制。下面是它们的使用方法:

1.4.1 BACKSPACE常用: 将文件定位到上一个记录的开头。

BACKSPACE(unit_number)

示例:

BACKSPACE(10)

  这将把文件单位号为 10 的文件定位到上一个记录的开头,也就是返回一行。

1.4.2 DELETE会用: 删除文件。

DELETE(file_name)

示例:

DELETE('data.txt')

  这将删除名为 “data.txt” 的文件。

1.4.3 FIND不常用: 在直接访问文件中搜索记录。

FIND(unit_number, value, iostat=iostat_var)

示例:

FIND(20, 'search_value', iostat=iostat_var)

  这将在文件单位号为 20 的直接访问文件中搜索记录,并将结果存储在 iostat_var 中。

1.4.4 REWIND常用: 将文件定位到开头。

REWIND(unit_number)

示例:

REWIND(30)

  这将把文件单位号为 30 的文件定位到开头。

1.4.5 FLUSH不常用: 将文件的缓冲区内容刷新到磁盘,确保数据被写入文件而不是仅停留在内存中。

FLUSH(unit_number)

1.4.6 REWRITE不常用: 用新的数据替换文件中的现有数据。

REWRITE(unit_number)
REWRITE(20)

  这将重写文件单位号为 20 的文件,将其内容替换为程序中提供的新数据。

2 结语

  这些操作关键字允许在 Fortran 程序中对文件进行更灵活的操作,从而实现更复杂的文件处理需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690599.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树介绍

引入 定义 区别 定义不同 形态不同 基本形态

重生奇迹mu再生宝石怎么用有什么用

重生奇迹mu再生宝石有2个用处: 1、在玛雅哥布林处给380装备加PVP属性4追4以上的380级装备,守护宝石一颗,再生宝石一颗,成功得到PVP装备,失败宝石消失,装备无变化; 2、给非套装点强化属性用法跟祝福,灵魂,生命一样直接往装备上敲,成功得到随机强化属性一…

睿尔曼机械臂ROS控制

下载git工程 git clone https://github.com/RealManRobot/rm_robot.git安装配置 catkin build rm_msgs source devel/setup.bash catkin build source setup.bash这里注意,如果采用setup.sh多半不会成功,必须要source setup.bash文件,ros才…

vue2项目升级到vue3经历分享5

写到第5篇了,解决了很多问题,还有一些需要调整 1 el-input-number指令兼容性调整 下面这个可编辑的表格,全是0,于是需要一个指令,让它自己实现如果是0,就置空;如果是数字就是格式化为千分位&…

HTTP1.1的优化措施

3.2 HTTP/1.1 如何优化? 可以从以下三个方面来优化http/1.1协议: 尽量避免发送 HTTP 请求; 在需要发送 HTTP 请求时,考虑如何减少请求次数; 减少服务器的 HTTP 响应的数据大小; 避免发送HTTP请求 对于…

文献阅读——中国农产品期货的正负价格泡沫(LPPLS)

Positive and negative price bubbles of Chinese agricultural commodity futures Fang, Ming, Yizhou Lin, and Chiu-Lan Chang. “Positive and negative price bubbles of Chinese agricultural commodity futures.” Economic Analysis and Policy 78 (2023): 456-471. 经…

React 第三十章 前端框架的分类

现代前端框架,有一个非常重要的特点,那就是基于状态的声明式渲染。如果要概括的话,可以使用一个公式: UI f(state) state:当前视图的一个状态f:框架内部的一个运行机制UI&#xff1…

ADS基础介绍篇1

一. ADS简介 常用的射频仿真软件有ADS和AWR,ADS(Advanced Design system)最传统,是Agilent公司于2008年推出的电磁场仿真器,可提供原理图设计和layout版图设计。仿真功能十分强大,可提供从无源到有源,从直流到交流&am…

【激活函数--中】激活函数和阶跃函数的可视化及对比

文章目录 一、Python中绘制阶跃函数的图形二、实现和可视化Sigmoid函数2.1 Python实现2.2 可视化Sigmoid函数 三、比较Sigmoid函数与阶跃函数3.1 Sigmoid函数与阶跃函数的差异3.2 Sigmoid函数与阶跃函数的共同点 一、Python中绘制阶跃函数的图形 在Python中实现阶跃函数的代码…

SD-WAN提升Microsoft 365用户体验

随着数字化时代的到来,SaaS应用如Microsoft 365已经成为各类企业的主流选择。在这一趋势下,企业需要以更加灵活、高效的方式使用Microsoft 365,以满足日益增长的业务需求。而传统的网络基础设施可能无法满足这一需求,因此&#xf…

Gitlab:从其它项目组里导入一个项目

1.首先获取原项目的http地址 http://ip/projectGroup/ProjectX.git其中,ip 为公司gitlab内网地址。 2.进入目的项目组进行创建 首先,需要拥有一个该组拥有者权限的账号,才能进行后续的操作。 2.1.点击创建项目按钮 2.2.选择导入项目 其中…

SAP_MM模块-配置物料主数据号码段时的一些坑

业务背景:对于新入职的一家公司,人员不熟悉,业务不熟悉、系统也不熟悉的情况下,领导要求负责一个推广项目(只需要维护MM和FICO模块),对于一个没有独立配置过财务模块的后勤顾问来说,…