ENVI_IDL: 文本文件的读取(主要是txt、csv文件)

简介: ENVI_IDL: 文本文件的读取(主要是txt、csv文件)

1. 需要用到的函数

openr, 1, 路径——》1表示该路径下文件的内存地址的代称


变量 = file_lines(路径)——》传入文件所在的路径,返回该文件的行数


readf, 代称, 接收数据的变量——》第一个参数为文件的内存地址的代称, 第二个是接收数据的变量


skip_lun, 代称, 行数, /lines——》指定文件的代称, 指定需要跳过的行数, /lines表示前面跳过的是行


free_lun, 1代称——》指定文件的代称, 用于关闭文件的内存占用


2. 编程

pro week_six_study1
  ; 如何读取文本数据(主要是读取txt、csv后缀的文本文件)(txt是以空格分隔,csv是以半角逗号分隔)
  ; 路径
  file_path = 'D:/IDL_program/experiment_data/chapter_4/2013_year_aop.txt'
  ; 小白读取txt文件
  ; 打开该txt文件——》如果你只是读文件openr就可以了,openw既可以读也可以写(会覆盖原来的文件,慎用)
  openr, 1, file_path  ; 第一个1用来表示这个文件的内存地址,第二个是该文件的路径
  ; 由于第一行是索引,索引是文字,索引下面是数字, 两者类型不一致,不能放在一个数组里面存储,所以需要跳过
  skip_lun, 1, 1, /lines  ; 第一个1表示文件的编号或者说是内存地址的代称,第二个1表示需要跳过的行数,这里只跳过第一行,所以是1,第三个表示第二个参数的单位是行而不是列
  ; 创建存储的数组
  box_data = fltarr(5, 56304)  ; 通过记事本打开该文件事先查看到该文件的数据的行列数(共有5列56305行,但是第一行跳过所以只需要56304行)
  ; 获取文件的数据
  readf, 1, box_data
  ; 检验一下
  print, box_data[0, -1]  ; 发现一个新的玩意就是idl的取值也可以负值去取(和python一样,不详讲),这里等价于box_data[0, 56303]
  ; 关闭文件(养成好习惯)
  free_lun, 1
  ; 正常人读取txt文件
  ; 打开该txt文件
  openr, 1, file_path  ; 假如你上面没有free_lun,1那么这里是打不开的
  ; 拿到第一行的索引数据,这也是有用的(获取列数),跳过显得有些浪费
  ; 预先有一个str变量存储
  str = ''
  readf, 1, str  ; 这里你可能会疑惑,但是呢?readf是秉承着有多少给多少,现在str是一个字符串,默认输出一行,如果你是数组,那么根据数组的行列数有多少给多少
  ; 对得到的存储有第一行索引数据的str变量进行分析,通过该字符串分析出整个数据有多少列
  son_str_array = strsplit(str, /extract)  ; 不传入以什么作为分隔符,默认以空格作为该字符串的分隔符
  ; son_str_array里面有几个元素,那么整个数据就有几列
  column = n_elements(son_str_array)
  ; 现在获取行数
  row = file_lines(file_path) - 1  ; 第一行是索引,我们不放进下面的数组里面
  ; 创建存储的数组
  box_data = fltarr(column, row)
  ; 获取数据(这里得到的行数是从第二行的开头开始的,因为前面已经readf, 1, str了,所以文件指针已经指到了第二行开头处)
  readf, 1, box_data
  ; 检验一下
  print, box_data[0, -1]
  ; 关闭文件
  free_lun, 1
  ; 高手读取txt文件
  ; 打开文件
  openr, 1, file_path
  ; 跳过第一行
  skip_lun, 1, 1, /lines
  ; 读取文件的行数
  row = file_lines(file_path) - 1
  ; 创建存储的列表
  box_data = fltarr(5, row)  ; 这里的5是通过txt记事本打开看到的
  ; 获取txt文件数据
  readf, 1, box_data
  ; 检验一下
  print, box_data[0, -1]
  ; 关闭文件
  free_lun, 1
  ; 可能你会问,着有什么高级,我想说,高级不是什么东西都要编程去完成,高效才是最重要的
  ; 在这种文件里面,我们知道列数一般是不会变化的,所以直接用记事本打开看一下又何妨,但是行数由于每一个文件的行数都不一样
  ; 如果是一个文件那么还好,如果是很多文件,你都用记事本打开看一下吗,这是不现实,多了的我就不讲了。
  ; 读取csv文件
  ; 路径
  file_path = 'D:/IDL_program/experiment_data/chapter_4/air_quality_data.csv'
  ; 读取文件
  data = read_csv(file_path, header=par_name)  ; 第一行的索引给了数据给了par_name(但是无论你需不需要第一行索引数据,read_csv()函数默认都不会去读取第一行的数据)
  ; 查看data的类型
  help, data  ; 可以发现,这是一个结构体
  ; 输出第一列数据
  print, data.(0)
  ; 输出第一行的索引数据
  print, par_name
  ; 输出列索引是NO2的数据(第一种方法你可以自己去数它所在的列号按上面的方式进行读取并输出,也可以按下面这种方法)
  NO2_index = where(par_name eq 'NO2')
  print, data.(NO2_index)
end
目录
相关文章
|
7月前
|
数据采集 数据可视化 数据挖掘
从CSV到交互式地图:用Plotly Express可视化地理数据
交互式地图让数据“活”起来:通过悬停、点击、缩放直观探索地理信息。结合Python的Pandas与Plotly Express,仅需几行代码即可实现散点图、热力图、线路图等可视化,支持自定义样式、动态筛选与多图层叠加,广泛应用于商业分析、环境监测、物流追踪等领域,零基础也能快速上手的空间数据分析利器。
433 1
|
存储 C语言 索引
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
914 0
|
消息中间件 人工智能 监控
【云故事探索】NO.15:阿里云云原生加速鸣鸣很忙数字化
鸣鸣很忙集团作为中国最大休闲食品饮料连锁零售商,通过数字化与云原生技术实现快速扩张,4年完成其他企业10年的数字化进程。其采用阿里云全栈云原生方案,实现弹性扩容、智能补货、模块化开店等创新实践,支撑日均超430万交易数据稳定运行。未来将深化AI应用,推动供应链智能化与业务全面升级。
|
机器学习/深度学习 数据采集 数据可视化
跟着penguins案例学Seaborn之Pairplot
跟着penguins案例学Seaborn之Pairplot
768 1
|
定位技术
ENVI: 如何创建GLT文件并基于GLT对图像进行几何校正?
ENVI: 如何创建GLT文件并基于GLT对图像进行几何校正?
2271 0
|
机器学习/深度学习 数据采集 传感器
使用Python实现深度学习模型:智能空气质量监测与预测
【8月更文挑战第21天】 使用Python实现深度学习模型:智能空气质量监测与预测
1828 3
|
存储
ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件
ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件
766 0
|
存储
地理探测器Geodetector软件下载、操作方法与结果解释
本文介绍Geodetector软件的下载方法,以及地理探测器分析的完整操作,并对其结果加以解读~
2966 2
地理探测器Geodetector软件下载、操作方法与结果解释
|
计算机视觉 Python
【Python】已解决:ModuleNotFoundError: No module named ‘cv2’
【Python】已解决:ModuleNotFoundError: No module named ‘cv2’
7505 0
|
监控 安全
使用代理ip产品需要实名认证这是为什么?
使用代理IP需实名认证原因:便于服务商提供服务和管理用户,保护网络资源免于非法活动,防止资源滥用,确保产品安全及双方信任。不同地区和服务商政策可能不同,购买时应注意阅读条款并合法使用。
767 0