序号 |
名称 |
|
功能说明
|
|
语法 & 举例 |
01 |
PRINT/PRINTF |
|
格式化输出(PRINTF 用于输出到文件)。 ---------------------------------------------------------------------------------- PRINT [, Expression1, ..., Expressionn] ---------------------------------------------------------------------------------- PRINTF [, Unit, Expression1, ..., Expressionn] ---------------------------------------------------------------------------------- Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, /IMPLIED_PRINT] [, MONTHS=string_array{12 names}] [, /STDIO_NON_FINITE] ---------------------------------------------------------------------------------- ◈ Unit:欲输出的文件单元(逻辑设备号) ◈ FORMAT=value:格式化控制
|
|
IDL> PRINT, 'IDL is fun.'
IDL is fun.
|
02 |
READ/READF |
|
格式化输入(READF 用于文件的读取)。 ---------------------------------------------------------------------------------- READ, [Prompt,] Var1, ..., Varn ---------------------------------------------------------------------------------- READF, [Prompt,] Unit, Var1, ..., Varn ---------------------------------------------------------------------------------- Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}] [, PROMPT=string] ---------------------------------------------------------------------------------- ◈ Unit:欲读取的文件单元(逻辑设备号) ◈ FORMAT=value:格式化控制 ◈ PROMPT=string:提示字符串
|
|
IDL> B=''
IDL> READ, B, PROMPT='Enter Name: '
Enter Name: ALEX
IDL> B
ALEX
|
03 |
READS |
|
从字符串中读取格式化数据。 ---------------------------------------------------------------------------------- READS, Input, Var1, ..., Varn [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}] ---------------------------------------------------------------------------------- ◈ Input:读取的字符串 ◈ Vari:赋值的变量 ◈ FORMAT=value:格式化控制
|
|
IDL> str='abc100def'
IDL> a=''
IDL> b=0
IDL> c=''
IDL> READS,str,a,b,c,FORMAT='(A3,I3,A3)'
IDL> PRINT,a,b,c
abc 100def
IDL> HELP,a,b,c
A STRING = 'abc'
B INT = 100
C STRING = 'def'
|
04 |
Format Codes |
|
格式化控制。 ---------------------------------------------------------------------------------- [n]FC[+][-][width] ---------------------------------------------------------------------------------- ◈ n:代表格式控制符的重复次数,默认为1次,所谓重复次数是指在一行中格式控制的次数,n=1,表示每行只显示一个变量,n=2,表示每行显示两个变量,n≥变量总数,单行显示 ◈ FC:Format Codes,格式控制符 ◈ +:正数前加“+”,仅对数字格式化输出有效(包括0) ◈ -:字符串和数字左对齐,默认是右对齐 ◈ width:数字或字符的宽度
|
|
IDL> ;格式符控制重复三次,一行显示三个
IDL> PRINT, FORMAT='(3I6)', [0, 10, 20]
0 10 20
-----------------------------------------
IDL> ;6个字符宽度,非负数前加“+”
IDL> PRINT, FORMAT='(I+6)', [-10, 0, 10]
-10
+0
+10
-----------------------------------------
IDL> ;6个字符宽度,左对齐
IDL> PRINT, FORMAT='(I-6)', [-10, 0, 10]
-10
0
10
-----------------------------------------
IDL> ;格式符宽度与字符串宽不符,字符串短则右对齐输出,长则截断
IDL> PRINT, FORMAT='(A4)', ['ABCDEF', 'AB']
ABCD
AB
-----------------------------------------
IDL> ;格式符宽度与数字长度不符,数字短则右对齐输出,长则输出为“*”
IDL> PRINT, FORMAT='(I3)', [12, 123, 1234]
12
123
***
-----------------------------------------
IDL> ;格式输出数字时前加0,数字短则左侧自动补0
IDL> PRINT, FORMAT='(I03)', [12, 123, 1234]
012
123
***
-----------------------------------------
IDL> ;格式符宽度为0,则依照原始格式输出
IDL> PRINT, FORMAT='(I0)', [12, 123, 1234]
12
123
1234
-----------------------------------------
IDL> ;总宽度为6,数字宽度为4,不足的用0填充
IDL> PRINT, FORMAT='(I6.4)', [12, 123, 1234]
0012
0123
1234
|
|
FC —— 字符、字符串及整数 ---------------------------------------------------------------------------------- [n]A[-][w] [n]I[+][-][w][.m] [n]B[-][w][.m] [n]O[-][w][.m] [n]Z[-][w][.m] ---------------------------------------------------------------------------------- ◈ A:字符及字符串的格式化输入输出 ◈ I:整数输入输出时的 十进制 ◈ B:整数输入输出时的 二进制 ◈ O:整数输入输出时的 八进制 ◈ Z:整数输入输出时的 16进制 ◈ w:输入输出宽度 ◈ m:无空格的宽度,无数字部分由 0 填充
|
|
FC —— 输入输出位置控制 ---------------------------------------------------------------------------------- Tn TLn TRn nX ---------------------------------------------------------------------------------- ◈ T:变量输出的绝对位置,n 表示位置值 ◈ TL:从当前位置向左移动,n 表示向左移动的字符数 ◈ TR:从当前位置向右移动,n 表示向右移动的字符数 ◈ X:空格输出,n 是空格的个数
|
|
IDL> ;绝对位置为6,为2的时候,将原数据替换
IDL> PRINT, FORMAT='("AB", T6, "CD")'
AB CD
IDL> PRINT, FORMAT='("AB", T2, "CD")'
ACD
-------------------------------------------------
IDL> ;左右移动输出
IDL> PRINT, FORMAT='("AB", 2X, "CD", 4X, "EF")'
AB CD EF
IDL> PRINT, FORMAT='("AB", "CD", TL2, "EF")'
ABEF
IDL> PRINT, FORMAT='("AB", "CD", TR4, "EF")'
ABCD EF
|
|
FC —— 浮点数格式符(F、D、E、G) ---------------------------------------------------------------------------------- [n]F[+][-][w][.d] [n]D[+][-][w][.d] [n]E[+][-][w][.d] [n]G[+][-][w][.d] ---------------------------------------------------------------------------------- ◈ F:以定点计数法输出浮点型(单精度) ◈ D:以定点计数法输出浮点型(双精度) ◈ E:指数形式(科学格式)输出 ◈ G:根据数据大小自动选择科学格式E或F格式输出 ◈ w:字符宽度 ◈ d:四舍五入的精度
|
|
IDL> ;浮点数显示,精度,科学计数法
IDL> PRINT, FORMAT='(F10.4)', [11.22225, 115486.3, 2.0]
11.2222
**********
2.0000
IDL> PRINT, FORMAT='(E15.4)', [11.22225, 115486.3, 2.0]
1.1222E+001
1.1549E+005
2.0000E+000
IDL> PRINT, FORMAT='(G12.4)', [11.22225, 115486.3, 2.0]
11.22
1.155E+005
2.000
|
|
FC —— C()日期与时间输出 ---------------------------------------------------------------------------------- [n]C([c0,c1,...,cx]) CMOA[-][w]、CMoA[-][w]、CmoA[-][w] CMOI[+][-][w][.m] CDI[+][-][w][.m] CYI[+][-][w][.m] CHI[+][-][w][.m]、ChI[+][-][w][.m] CMI[+][-][w][.m] CSI[+][-][w][.m] CSF[+][-][w][.d] CDWA[-][w]、CDwA[-][w]、CdwA[-][w] CAPA[-][w]、CApA[-][w]、CapA[-][w] ---------------------------------------------------------------------------------- ◈ CMOA:C-MONTH-A,字符串形式输出月,Cmoa-dec、CMoA-Dec、CMOA-DEC ◈ CMOI:C-MONTH-I,数字形式输出月 ◈ CDI:C-DAY-I,数字形式输出日 ◈ CYI:C-YEAR-I,数字形式输出年 ◈ CHI:C-HOUR-I,数字形式输出小时,CHI-14(24小时制)、ChI-2(12小时制) ◈ CMI:C-MINUTE-I,数字形式输出分钟 ◈ CSI:C-SECOND-I,数字形式输出秒 ◈ CSF:C-SECOND-F,浮点数形式输出秒 ◈ CDWA:C-DAY-WEEK-A,字符串形式输出星期,cdwa-sun、CDwa-Sun、CDWA-SUN ◈ CAPA:C-AM-PM-A,字符串形式输出上午或下午,capa-pm、CApa-Pm、CAPA-PM
|
|
IDL> ;日期输出,下面补0
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI, "-", CDI))'
2016- 8-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI, ":", CMI, ":", CSI))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI02, "-", CDI02))'
2016-08-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI02, ":", CMI02, ":", CSI02))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI4.3, ":", CMI5.4, ":", CSI0.3))'
014: 0035:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(ChI4.3, ":", CMI5.4, ":", CSI0.3))'
002: 0035:56
|
05 |
OPENR/OPENU/OPENW |
|
打开文件。 OPENR:打开读文件,文件已经存在 OPENW:打开写文件,文件不存在新建文件,文件存在则删除原内容 OPENU:打开更新文件,文件已经存在 ---------------------------------------------------------------------------------- OPENR, Unit, File ---------------------------------------------------------------------------------- OPENW, Unit, File ---------------------------------------------------------------------------------- OPENU, Unit, File ---------------------------------------------------------------------------------- Keywords: [, /APPEND | , /COMPRESS] [, BUFSIZE={0 | 1 | value>512}] [, /DELETE] [, ERROR=variable] [, /F77_UNFORMATTED] [, /GET_LUN] [, /MORE] [, /NOEXPAND_PATH] [, /STDIO] [, /SWAP_ENDIAN] [, /SWAP_IF_BIG_ENDIAN] [, /SWAP_IF_LITTLE_ENDIAN] [, /VAX_FLOAT] [, WIDTH=value] [, /XDR] ---------------------------------------------------------------------------------- ◈ Unit:欲打开的文件单元(逻辑设备号) ◈ File:文件的路径,字符串 ◈ APPEND:指针定位到文件的最后,准备添加信息,默认情况指针定位到文件的最开始 ◈ GET_LUN:设置此关键字,将调用 GET_LUN 过程,在文件还没打开之前就对 Unit 赋值
|
|
;在文件中添加新内容
file="D:\IDL\blog\1.txt"
OPENW, lun, file, /APPEND, /GET_LUN
PRINTF, lun, "alexbnlee"
FREE_LUN, lun
---------------------------------------
;读取文件中的内容,一行一行读取,并输出
str=''
file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN
WHILE(~EOF(lun)) DO BEGIN
READF, lun, str
PRINT, str
ENDWHILE
FREE_LUN, lun
|
06 |
EOF |
|
测试指定文件单元是否到达文件结尾,返回布尔值。 ---------------------------------------------------------------------------------- Result = EOF(Unit) ---------------------------------------------------------------------------------- ◈ Unit:文件单元(逻辑设备号)
|
|
|
07 |
GET_LUN |
|
获取一个逻辑设备号。 ---------------------------------------------------------------------------------- GET_LUN, Unit ---------------------------------------------------------------------------------- ◈ Unit:文件单元(逻辑设备号)
|
|
|
08 |
FREE_LUN |
|
释放一个逻辑设备号并关闭文件。 ---------------------------------------------------------------------------------- FREE_LUN [, Unit1, ..., Unitn] [, EXIT_STATUS=variable] [, /FORCE] ---------------------------------------------------------------------------------- ◈ Uniti:文件单元(逻辑设备号)
|
|
file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN
;获取文件的总字符数
SKIP_LUN, lun, /EOF, TRANSFER_COUNT=n_bytes
PRINT, n_bytes
;指针定位到文件开始
POINT_LUN, lun, 0
;获取文件的总行数
SKIP_LUN, lun, /LINES, /EOF, TRANSFER_COUNT=n_lines
PRINT, n_lines
FREE_LUN, lun
|
09 |
POINT_LUN |
|
设置或者获取指定文件的文件指针位置。 ---------------------------------------------------------------------------------- POINT_LUN, Unit, Position ---------------------------------------------------------------------------------- ◈ Unit:文件单元(逻辑设备号) ◈ Position:移动指针的字节数
|
10 |
SKIP_LUN |
|
移动文件指针来读取文件。 ---------------------------------------------------------------------------------- SKIP_LUN, FromUnit, [, Num] [, /EOF] [, /LINES] [, /TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ FromUnit:文件单元(逻辑设备号) ◈ Num:忽略的数目 ◈ EOF:直接跳到文件结尾 ◈ LINES:按照行来计数,默认按照字节来计数 ◈ TRANSFER_COUNT=variable:记录忽略的数目,即 Num 的值,对于设置 EOF 而言,可以计算文件总的字符数或者总的行数
|
11 |
CLOSE |
|
关闭文件。 ---------------------------------------------------------------------------------- CLOSE[, Unit1, ..., Unitn] [, /ALL] [, EXIT_STATUS=variable] [, /FILE] [, /FORCE] ---------------------------------------------------------------------------------- ◈ Uniti:要关闭的文件单元(逻辑设备号) ◈ ALL:关闭所有打开的文件单元(逻辑设备号)
|
|
|
12 |
READU |
|
读取二进制文件。 ---------------------------------------------------------------------------------- READU, Unit, Var1, ..., Varn [, TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ Unit:欲读取的文件单元(逻辑设备号) ◈ Vari:接收数据的变量名
|
|
|
13 |
WRITEU |
|
写入二进制文件。 ---------------------------------------------------------------------------------- WRITEU, Unit, Expr1 ..., Exprn [, TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ Unit:欲读取的文件单元(逻辑设备号) ◈ Vari:接收数据的变量名
|
|
|
|
|
|
|
|
|