Cos'è il PaLUG?? II - Aridaglie [Proto-o-matic.pl]

Markus markus@mania.homelinux.net
Gio 19 Gen 2006 17:28:03 CET


The Hand wrote:

>Il risultato? Eccolo:
>
>[code]
>
>#!/usr/bin/perl
># Proto-O-Matic #
>## Variabili di sistema ##
>$dir = "/home/thehand/Scansioni";
>
>## Inizio ##
>@elements = `ls $dir`;
>chomp @elements;
>for (@elements){
>        if (/^(\d+_\d+)_\d+\.ps/){
>                push @{$a{$1}}, $&;
>                }
>        }
>
>`psmerge @{$a{$_}} |ps2pdf - $_.pdf` for (keys %a);
>
>open LOG, ">>$dir/log";
>print LOG "\n\n\n-------\n";
>print LOG `date`;
>print LOG "-------\n";
>
>$"="\n"; print LOG "\t$_:\n@{$a{$_}}\n\n" for (keys %a);
>
>unless (-d "$dir/SRC") {
>        `mkdir $dir/SRC`;
>        }
>`mv *.ps SRC`;
>#### Fine ####
>
>[/code]
>  
>
beh non potevo mancare dal farne una versione pitonesca, per quanto
secondo me la bellezza del pitone va cercata altrove, cmq ve lo faccio
vedere lo stesso (è stata l'occasione per capire gli iteratori). Non fa
esattamente la stessa cosa (converte tiff) ma per fare una prova avevo
solo quelli :-P

[code]
#!/usr/bin/env python
"""
Software per la manutenzione di archivi, blah blah blah
"""
import os
import re
from itertools import imap, ifilter, groupby

srcdir  = os.path.join( '.', 'data' )
tmpdir  = os.path.join( '.', 'tmp' )
destdir = os.path.join( '.', 'dest' )
dirlist = os.listdir(srcdir); dirlist.sort()
pattern = re.compile( '(\d{6}-\d{4}-\d{5})-(\d+).tif' )

# raggruppa i file
for (basename, group) in groupby(
    imap(
      lambda x: re.search(pattern, x).groups(),
        ifilter(
          lambda x: re.search( pattern,x ), dirlist) ),
            lambda (cod, prog): cod ):

    # per ciascun gruppo esegui le operazioni del caso...
    args = ''
    for i in group:
        src = os.path.join( srcdir, "-".join(i) )+".tif"
        tgt = os.path.join( tmpdir, "-".join(i) )+".pdf"
        os.system ( "tiff2pdf %s >%s" % (src,tgt) )
        args += tgt + ' '

    destpath = os.path.join( destdir, basename)+".pdf"
    os.system( "gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite
-sOutputFile=%s %s"% (destpath, args) )
    os.system( "rm %s" % args )

[/code]

Una piccola nota: facendo i test ho notato che psmerge è una ciofeca...
per questo motivo ho usato gv come consigliato da una pagina trovata da
qualche parte... YMMV

>
>Chiudo sorridendo, questa mail...ripenso ad una bella serata, fatta di
>amicizia, stimoli e cooperazione...e cosa più importante di PASSIONE!!
>
>  
>
Una bella serata sì

>Buona notte PaLUG!
>Il Vostro Dio
>  
>
8=B

M4rkus



Maggiori informazioni sulla lista palermo