[GRASS-dev] how to work around "Arument list too long" error in a GRASS python script ?
Moritz Lennert
mlennert at club.worldonline.be
Sat Jun 13 02:50:36 PDT 2015
On 11/06/15 20:05, Anna Petrášová wrote:
>
>
> On Thu, Jun 11, 2015 at 1:46 PM, Moritz Lennert
> <mlennert at club.worldonline.be <mailto:mlennert at club.worldonline.be>> wrote:
>
> On 11/06/15 19:02, Nikos Alexandris wrote:
>
> * Moritz Lennert <mlennert at club.worldonline.be
> <mailto: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.
>
>
> Oh, I didn't know that it already has it. Good to know!
And, just for info, it solves my problem beautifully.
Moritz
More information about the grass-dev
mailing list