[Scilab-users] Read file (.txt)

Stefan Du Rietz sdr at durietz.se
Sun Sep 13 14:35:14 CEST 2020


On 2020-09-12 16:55, Stefan Du Rietz wrote:
> 
> 
> On 2020-09-12 00:06, Stefan Du Rietz wrote:
>> On 2020-09-11 19:32, Samuel Gougeon wrote:
>>> Le 11/09/2020 à 16:51, Stefan Du Rietz a écrit :
>>>> Hello Samuel,
>>>>
>>>> read() never works OK with m = -1, see your own comment in Bug 15075!
>>>>
>>>> This prevented me from upgrading to Scilab 6 until I found out how 
>>>> to do it with fscanfMat(). But then I had to remove all blank lines 
>>>> in my files (which I had to quickly find different parts of my data).
>>>
>>>
>>> For me, it perfectly works for Daniel's file, with 6.0.2 as well as 
>>> with 6.1.0.
>>> May be the 15075's report could be retested and updated.
>>
>>
>> With which OS? I am only using Linux (Ubuntu).
>>
>> As a workaround, in Linux, you can quickly get the number of lines:
>> --> m = evstr(strtok(unix_g("wc -l " + filename), " "));
>>
>> I will add to the bug report.
>>
>> /Stefan
> 
> 
> That does not work if the file contains empty lines because the argument 
> m to read() is the number of not empty lines to read! So one must 
> subtract the number of empty lines from m above ...
> 
> Why on earth was read() changed from the excellent previous version to 
> one of no use???


But this does work (m is the number of not empty lines) and is about as 
fast:
--> m = evstr(unix_g("grep -vc ^$ " + filename));

So, together with
--> n = size(evstr(mgetl(filename, 1)), 2);
--> M = read(filename, m, n);

Daniel can get what he wants.

/Stefan



More information about the users mailing list