GrADS学习笔记之一:读写ASCII文本文件+自定义函数

GrADS学习笔记之一:读写ASCII文本文件+自定义函数,废话少说,千里之行始于足下:

"reinit"
"set display color white";*设置背景色为白色,默认为黑色
"c"

"open model.ctl"
"set lon -180 180"
"Set lat -90 90"
"set z 5"
"Set t 1"
"set gxout contour"
"d ps"
*
*演示如何读取ASCII文本文件中的内容
rf=read('testshp.gs');*只能每次读一行
line1=sublin(rf,2);*rf第一行为状态码,第二行才是真正的文本
say 'line1 = 'line1
*
*演示如何读取文件状态码
fileio=subwrd(rf,1);*rf第一个字符为状态码,为0表示读写正确
say 'fileio must be 0: ' fileio
*

"q dims"
say result;*查看维数

;*演示如何使用函数
FileName='test_ascii.txt'
n=readfile(FileName)
say 'Number Of Lines: ' n

;*演示如何定义函数
function readfile(FileName)
*演示读取整个ASCII文本文件,最多读10行
say '---------------Start of File-------------------'
num=0;*Number Of Lines
while(num<=10000);*最多读10000行
    r=read(FileName)
    temp=subwrd(r,1);*提取第一行的状态码,读取无错误应状态码为0
    if (temp != 0);break;endif;*如果读取有误或读到EOF就退出
*显示文件
    line=sublin(r,2);*提取该行字符串
    say line;*打印该行信息
*	
    num=num+1
endwhile
say '---------------End of File---------------------'
*返回文件行数
return(num)
;

将整个文件读到一个字符串中的方法,我目前还在困惑中.下面的方法虽返回一个字符串,但是字符串中的换行符添加无效:

"reinit"
"set display color white";*设置背景色为白色,默认为黑色
"c"

"open model.ctl"
"set lon -180 180"
"Set lat -90 90"
"set z 5"
"Set t 1"
"set gxout contour"
"d ps"
*
;*演示如何使用函数
FileName='test_ascii.txt'
rf=readfile(FileName)
say rf

*演示如何读取ASCII文本文件中的内容
num=subwrd(rf,1);*提取文件总行数
say 'Number Of Lines: ' num
*
say '---------------Start of File-------------------'
ni=1
while(ni<=num)
    line=sublin(rf,ni);*提取该行字符串
    say 'Line ' ni ' : 'line;*打印该行信息
    ni=ni+1
endwhile
say '---------------End of File---------------------'
*
;*演示如何定义函数
function readfile(FileName)
*演示读取整个ASCII文本文件,最多读10行
num=0;*Number Of Lines
Lines='\n'
while(num<=10000);*最多读10000行
    r=read(FileName)
    temp=subwrd(r,1);*第一行仅有一个单词,为状态码,读取无错误应状态码为0
    if (temp != 0);break;endif;*如果读取有误或读到EOF就退出
*显示文件
    line=sublin(r,2);*提取该行字符串
    tlines=Lines
    Lines=tlines' ' line '\n'
*	
    num=num+1
endwhile
*返回文件行数和文本字符串
return(num' 'Lines)
;
结果如下,看到没有,返回的字符串只有一行:

GrADS学习笔记之一:读写ASCII文本文件+自定义函数_第1张图片

你可能感兴趣的:(GrADS)