IDL學習筆記 建立與讀取檔案

2021-10-20 18:45:06 字數 2666 閱讀 4605

;建立與讀取檔案,以txt格式為例

;caption:如何把資料寫入檔案?

idl> file=『f:\crfurtherstudy\idl\idl85workspace\source code\helloworld\cr1.txt』

;此時目錄下還沒有file檔案,只是定義了乙個file的字串變數

idl> openw,lun,file,/get_lun

;此時可以在目錄下找到定義的txt空檔案

idl> arr=indgen(5,4)

idl> printf,lun,arr

;利用printf向剛剛建立的txt檔案寫入乙個陣列arr,但此時開啟txt檔案還看不見arr的陣列,需要釋放lun(free_lun)

idl> free_lun,lun

;此時可以在目錄中看到寫有arr陣列的txt檔案

example:

idl> file=『f:\crfurtherstudy\idl\idl85workspace\source code\helloworld\cr1.txt』

idl> arr=indgen(5,4)

idl> printf,lun,arr

idl> free_lun,lun

;如何在已經寫入資料的檔案中繼續寫入資料?

;如果輸入的資料太長,txt檔案中一行顯示不出來強制換行怎麼辦?

idl> arr=indgen(13,5)

idl> openw,lun,file,/get_lun

idl> printf,lun,arr

idl> free_lun,lun

;此時cr1檔案中陣列情況如圖:

;此時文字中一行顯示不了138這麼多字元,因此需要加入width關鍵字控制輸出的格式如下:(注意這裡要解釋一下為什麼是138,因為陣列是13列,每乙個資料為int,佔8個位置,因為width要設定至少為138)

idl> openw,lun,file,/get_lun,width=138

idl> printf,lun,arr

idl> free_lun,lun

;輸出結果為13*5的陣列如圖:

如何讀取檔案中的資料?

;將剛剛輸入文字的135陣列讀取到我們需要的data變數中

idl> openr,lun,file,/get_lun

;openr命令,意思是開啟讀取名字叫lun的file檔案

idl> data=intarr(135)

;定義乙個13*5的0陣列data用於等會兒儲存資料

idl> readf,lun,data

;利用readf命令將lun中的資料讀取到data變數中儲存

example:

idl> openr,lun,file,/get_lun

idl> data=intarr(13*5)

idl> readf,lun,data

緊接著:如何繼續讀取下面的資料?

idl> tmp=』』

;首先定義個string變數tmp用於儲存接下來讀取的資料

idl> openr,lun,file,/get_lun

;常規的openr命令(openread)

idl> skip_lun,lun,5,/lines

;跳過5行讀取下面的資料

idl> readf,lun,tmp

idl> tmp

crexample:

idl> tmp=』』

idl> openr,lun,file,/get_lun

idl> skip_lun,lun,5,/lines

idl> readf,lun,tmp

idl> tmp

cr如果事先不知道cr1.txt檔案中的陣列是幾行幾列,但他們格式很整齊,比如都是int整型,那麼如何讀取?

思路是先計算出檔案中的資料是幾行幾列的,然後readf

idl> idl> openr,lun,file,/get_lun

idl> nl=file_lines(file)

;讀取檔案的行數nl

idl> t=』 』

idl> readf,lun,t

;將檔案的第一行資料寫入t,這裡由於t是string,因此恰好是讀取第一行(如果是陣列就是讀取幾行幾列)

idl> crsplit=strsplit(t,』 ')

;利用strsplit函式將t用空格『 』拆分,存入變數crsplit

idl> nr=n_elements(crsplit)

;crsplit中元素的個數即為檔案中資料的列數

idl> data1=intarr(nr,nl)

idl> openr,lun,file,/get_lun

idl> readf,lun,data1

;將檔案中資料存入data1

example:

idl> idl> openr,lun,file,/get_lun

idl> nl=file_lines(file)

idl> t=』』

idl> readf,lun,t

idl> crsplit=strsplit(t,』 ')

idl> nr=n_elements(crsplit)

idl> data1=intarr(nr,nl)

idl> openr,lun,file,/get_lun

idl> readf,lun,data1

171 IDL讀取HDF檔案

description describe the procedure.author dyq 2009 7 19 pro test readhdf compile opt idl2 file file dirname routine filepath test readhdf data mod04 l...

建立檔案,檔案讀取與顯示

usr bin env python maketextfile.py create text file import os ls os.linesep get filename while true fname raw input enter filename if os.path.exists f...

CSV檔案的建立與讀取

csv檔案是最常用的乙個檔案儲存方式。逗號分隔值 common separated values,csv 檔案以純文字形式儲存 資料 注 分隔字元也可以是其他字元 純文字說明該檔案是乙個字串行,不包含必須像二進位制數字那樣被解讀的資料。csv檔案由任意數目記錄組成,記錄間以某種換行符分隔 每條記錄由...