lire un gros fichier text par ligne | |
cr8825 | 1-Sep-2011/16:54:14+2:00 |
hello, auriez vous une méthode pour lire un gros fichier par ligne ? le but étant de sélectionner des lignes du gros fichier A et de les écrire dans un fichier B & cela sans encombrer la mémoire..... merci d'avance | |
DocKimbel | 1-Sep-2011/18:06:16+2:00 |
Il y a ce script de Carl pour copier de gros fichiers sans les charger entièrement en mémoire: http://www.rebol.com/article/0281.html Il ne copie pas ligne par ligne, mais par blocs de 100'000 octets. | |
cr8825 | 2-Sep-2011/10:24:58+2:00 |
merci beaucoup que pensez vous de cela do_something: func[ data nbr ][ probe rejoin ["ligne " nbr " data =>" data] ] read_f_l: func[ port /local nbr_line read_size data data_line ][ data_line: "" read_size: 10 nbr_line: 0 forskip port read_size [ data: copy/part port read_size either found? find data newline [ nbr_line: nbr_line + 1 ind: index? find data newline append data_line copy/part data ind do_something to-string data_line nbr_line data_line: none data_line: copy/part skip data ind tail data ][ append data_line data ] ] ] port: open/seek %myfile read_f_l port close port | |
cr8825 | 7-Sep-2011/11:17:26+2:00 |
correctiondo_something: func[ data nbr ][ probe rejoin ["ligne " nbr " data =>" data] ] read_f_l: func[ port[port!] /local nbr_line read_size data data_line ][ data_line: "" read_size: 1024 nbr_line: 0 i: 0 forskip port read_size [ i: i + 1 data: copy/part port read_size either found? find data newline [ ind: index? find/last data newline append data_line copy/part data ind foreach l (parse data_line to-string newline)[ nbr_line: nbr_line + 1 do_something to-string l nbr_line ] data_line: none data_line: copy/part skip data ind tail data ][ append data_line data ] if i > 2 [ ;exit ] ] ] port: open/seek myfile read_f_l port close port | |
Login required to Post. |