各位網友:
在txt檔內有數千筆資料,假如我要擷取其中的一行(已知行數),
請問有何方法可以快速擷取到,我目前使用的方法是一行一行擷取,
方法有點笨,不知各位有沒有較好的方法。
另外想問一下,假如資料行數有數萬行,用txt檔存好嗎?
或是用excel,還是有其他較好的方法,謝謝。
各位網友:
在txt檔內有數千筆資料,假如我要擷取其中的一行(已知行數),
請問有何方法可以快速擷取到,我目前使用的方法是一行一行擷取,
方法有點笨,不知各位有沒有較好的方法。
另外想問一下,假如資料行數有數萬行,用txt檔存好嗎?
或是用excel,還是有其他較好的方法,謝謝。
你還是把例子說清楚一點,並附上你要處理的TXT 檔還有你自己作的程式,這樣這邊的先進才方便幫你看怎麼作會比較快.
http://www.labview.com.tw/forum/forum_posts.asp?TID=3594&KW=pick+line
請參考我以前發問的內容看是否合乎你的需求thanks
OS: WIN XP
LV: 7.1
H/W: USB-HS-GPIB
沒錯,這正是我想要的,但我還有個問題想問一下,
我寫了一個程式,是建立一個txt檔的,save_line.vi
假如我建立了一筆30000行的資料,
用你的程式來捉我要的那一行的文字,
好像執行的時間需要20~30秒耶,
因為我的資料行數有數萬行,有沒有方法可以改善,謝謝。
另外想再問一下,如果我擷取了我想要的那行文字後,
想把文字內容改一下再回存,不知有無此功能?
用「Pick Line.vi」可以捉到你要的指定行的文字,
「Search and Replace Pattern.vi」則可以替換該文字。
前者可以直接用行數來指定目標,
後者則要用『Special Characters for Match Pattern 』來指定。
即然你可以知道你的目標是在哪一行,一定有個判斷準則,
此即可用在「Search and Replace Pattern.vi」。
另外,我用「Pick Line.vi」來找你的程式所製造出來的文字檔,
速度很快,你要不要確認一下使用方式是否有出入。
我知道為什麼我用 pick line.vi讀取某一行會很慢了,
因為它把讀進來的檔案先用string顯示,所以才會這麼慢,
把string刪了之後就很快了(不用1秒),
至於把讀取那一行的文字改變內容後再回存,我再試看看airbot所教的方式試看看,
真的不行再求助了,感謝大家的幫忙。
[QUOTE=s9440523]
我知道為什麼我用 pick line.vi讀取某一行會很慢了,
因為它把讀進來的檔案先用string顯示,所以才會這麼慢,
把string刪了之後就很快了(不用1秒),
至於把讀取那一行的文字改變內容後再回存,我再試看看airbot所教的方式試看看,
真的不行再求助了,感謝大家的幫忙。
[/QUOTE]
這是一個滿好的例子,
所有在程式中的 Controller、Indicator、Constant 都會佔用記憶體。
由於 LabVIEW 是 multi-thread 的開發程式,
而在畫面顯示本身使用了一個 thread ,
這一個 thread 是所有 thread 資源最為匱乏的,
所以不需要顯示的部分,
就不要讓該元件顯示出來。
而像 Chart、Graph 等元件,
每次有新的資料進來時,
是整個元件上的資料刷新,
所以在使用這些元件時,
通常會累積多筆資料後,
再一次刷新,
這樣可以讓程式不至於佔用太多系統資源。
我利用save_line.vi建立了一個10行的文字,
再利用我修改過的pick_line將第6行的文字置換,pick_line.vi
但會出現視窗(replace existing?)
有沒有辦法讓這個視窗不要出現,
另外我覺得這種寫法好像有點問題?
我把文字檔讀取後,將某行置換掉,再將整個文字檔回存,
如果檔案大一點,回存的時間會不會很久,
剛剛試了一下,建立10萬行,將某行置換,也是很快耶,怪怪?
Airbolt建議使用search and replace pattern.vi不知道怎麼使用耶,
是不是在我修改的pick_line.vi中的search string 和 replace string輸入端拿掉,
先經過 search and replace pattern.vi再輸入到search and replace string內,
如此就能置換我想換的文字,不必整行都置換,
嗯,我再試看看。
pick_line.vi會出現視窗是否可解?
(以下僅就手邊資料推斷,如有誤,煩請指正,謝謝)
小弟看過的處理 文字檔 的程式,包含「Conguration File VIs」
都是將整個 文字檔內容讀出後,經過處理,在整個存入
String 在 記憶體中,是以 Array 的型式存在,
電腦在處理 Array 時,哪怕只改變一個 member,也是整個 Array 改寫。
所以你提到的問題,小弟也曾經困惑過,因為感覺真的沒什麼效率,
但是好像也只能這樣子了。
另外,你提到的視窗對話框的部分,請參考底下文章:
(網路斷線,得要重打,真是令人無力)
(第二次發言,打得就很簡短,抱歉啦)