網頁

2019年10月27日 星期日

使用 Julia 讀取TSK log 檔案

安裝好 Julia後第一個作業就是練習檔案實作,我用TSK的 log 檔案來練習。
TSK的 log 檔案是一個2進制檔,每筆紀錄用 0x00 當作結束,如下圖:

接下來就是開啟檔案的寫法
fin = open(filename)
fin 是一個用於輸入的檔案串流,當不使用的時候可以用 close(fin)來關閉它。

接著用 read指令將 fin 指定的檔案讀取進來,轉成字串型態,放入 str 變數:
str = read(fin, String)

由於剛剛講過,log檔案每筆資料是以 0x00結束,因此要將字串中的 0x00 換成 \n (換行)
str2 = replace(str, r"\0" => "\n")

然後將最後的結果str2印出
println(str2)

程式碼如下:
fin = open("LOG_1.DAT")
org_s = read(fin, String)
aft_s = replace(org_s, r"\0" => "\n")
println(aft_s)


執行結果:

因為這樣每次只能開啟一個固定檔案名稱,下面就用 ARGS 外部指定檔案名稱當作參數
傳入程式,用一個迴圈去遍歷ARGS陣列,代碼如下:
for i in ARGS
    ...
    ...
end

實作的程式很簡單就原本的程式外再加上迴圈
for i in ARGS
    println(i)
    fin = open(i)
    org_s = read(fin, String)
    aft_s = replace(org_s, r"\0" => "\n")
    println(aft_s)
end


這樣我就可以同時輸入多個檔案依序讀取並印出:
julia prog.jl LOG_1 LOG_2 LOG_3 . . . 

執行結果如下:

因為檔案很大可以用重新導向到一個文字檔:
julia prog.jl LOG_1 LOG_2 LOG_3 . . .  > text_filename

程式碼可以參考:
https://glot.io/snippets/fha91jgr01

間單吧!



 

沒有留言:

張貼留言