序号 |
名称 |
|
功能说明
|
|
语法 & 举例 |
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:格式化控制
|
|
1 2 | 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:提示字符串
|
|
1 2 3 4 5 | 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:格式化控制
|
|
1 2 3 4 5 6 7 8 9 10 11 | 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:数字或字符的宽度
|
|
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 | 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 是空格的个数
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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:四舍五入的精度
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 赋值
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ;在文件中添加新内容
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:文件单元(逻辑设备号)
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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:接收数据的变量名
|
|
|
|
|
|
|
|
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2014-08-25 【146】ArcObjects类库索引