在txt檔內有數千筆資料,請問如何擷取其中的一行

各位網友:

在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」來找你的程式所製造出來的文字檔,
速度很快,你要不要確認一下使用方式是否有出入。

 

read_line[1].vi

我寫了一個程式不會很慢說~~不用1秒

程式寫的不好你試試看吧!

我知道為什麼我用 pick line.vi讀取某一行會很慢了,

因為它把讀進來的檔案先用string顯示,所以才會這麼慢,

把string刪了之後就很快了(不用1秒),

至於把讀取那一行的文字改變內容後再回存,我再試看看airbot所教的方式試看看,

真的不行再求助了,感謝大家的幫忙。![](upload://oJFZ9b0JZRtluEbdgsUHBv9yLzB.gif)

 

 

 

[QUOTE=s9440523]

我知道為什麼我用 pick line.vi讀取某一行會很慢了,

因為它把讀進來的檔案先用string顯示,所以才會這麼慢,

把string刪了之後就很快了(不用1秒),

至於把讀取那一行的文字改變內容後再回存,我再試看看airbot所教的方式試看看,

真的不行再求助了,感謝大家的幫忙。![](upload://oJFZ9b0JZRtluEbdgsUHBv9yLzB.gif)

[/QUOTE]

這是一個滿好的例子,
所有在程式中的 Controller、Indicator、Constant 都會佔用記憶體。

由於 LabVIEW 是 multi-thread 的開發程式,
而在畫面顯示本身使用了一個 thread ,
這一個 thread 是所有 thread 資源最為匱乏的,
所以不需要顯示的部分,
就不要讓該元件顯示出來。

而像 Chart、Graph 等元件,
每次有新的資料進來時,
是整個元件上的資料刷新,
所以在使用這些元件時,
通常會累積多筆資料後,
再一次刷新,
這樣可以讓程式不至於佔用太多系統資源。

Airbolt38639.4023611111

我利用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 改寫。

所以你提到的問題,小弟也曾經困惑過,因為感覺真的沒什麼效率,
但是好像也只能這樣子了。

另外,你提到的視窗對話框的部分,請參考底下文章:

(網路斷線,得要重打,真是令人無力)
(第二次發言,打得就很簡短,抱歉啦)