[GRASS-dev] how to work around "Arument list too long" error in a GRASS python script ?

Moritz Lennert mlennert at club.worldonline.be
Thu Jun 11 10:46:16 PDT 2015


On 11/06/15 19:02, Nikos Alexandris wrote:
> * Moritz Lennert <mlennert at club.worldonline.be> [2015-06-11 18:37:36 +0200]:
>
>> Hello,
>>
>> In a python script I have the following call:
>>
>> grass.run_command('r.series',
>>                      input = rate_maps,
>>                      output = sum_rates,
>>                      method = 'sum',
>>                      overwrite = True,
>>                      quiet=True)
>>
>> rate_maps is a list which in one instance contains 8559 map names,
>> leading to an "OSError: [Errno 7] Argument list too long".
>>
>> I know that in the shell I could use xargs to work around such a
>> problem. But how to do this in python ?
>
> What it the OS limit for it?

I suppose this is ARG_MAX ?

getconf ARG_MAX
2097152

A text file with all file names only uses 144551 bytes.

Or is there another limit I should look at ?


>>
>> I could obviously loop through all maps and thus sum them individually,
>> but this just seems horribly inefficient.
>>
>> Does anyone have a better solution ?
>
> - Maybe split in two or three sessions (instead of looping over all)?

Yes, thanks, I can do that. I'll also try the file option mentioned by 
Anna (r.series actually has one). Didn't think of that.

Thanks to both of you !

Moritz




More information about the grass-dev mailing list