Continuo dal post precedente Usare un link simbolico vista l’impraticabilità della soluzione “symbolic link” con Windows.
Come mi è stato fatto notare quelli su Windows non sono link ma collegamenti (ahemmm…). Anzi in inglese si chiamano shortcut, nessuna possibilità di confusione. Per sapere tutto su questa bestia c’è, al solito, Wikipedia.
OK, l’alternativa. Ma a questo punto devo dare prima una spiegazione: a cosa serve, cosa devo fare?
Ecco, si tratta di Gnuplot. Qui un esempio semplicissimo, per comodità ricopio lo script:
set term dxf set output 'dxf.dxf' TITLE = "DXF" set title TITLE offset char 0, char -1 set xrange [0:7] set yrange [0.7:10.3] unset key #toglie la legenda plot "dati-dxf" with linespoints # lw 3
Quello che rende bello questo script è che i dati da diagrammare (plottare) sono su un file separato, non c’è bisogno di cambiare lo script per altri dati. Almeno con Linux se le linee 2 e 9 contengono nomi di link simbolici invece di nomi di file. Adesso immaginatevi un lavoro vero: ci saranno da produrre diversi diagrammi, tutti simili, una pizza, se si deve fare con Windows.
Ancora un’osservazione: sì ho scorso il manuale (non tutto ma le parti che mi sembravano sull’argomento) e pare che non sia un’opzione prevista. Il manuale l’ho trovato anche molto soporifero e un po’ confuso.
La soluzione per Windows è di fare una copia dello script sostituendo la stringa segnaposto per i nomi dei file con quella passata come parametro. Non sarà ottimale ma funziona.
Allora, questo è lo script, modificato, da usare come template.
set term dxf set output 'NOMEFILE.dxf' TITLE = "DXF" set title TITLE offset char 0, char -1 set xrange [0:7] set yrange [0.7:10.3] unset key #toglie la legenda plot "NOMEFILE" with linespoints # lw 3
E questo lo script Python
#!/usr/bin/python # -*- coding: utf-8 -*- import os, sys if len(sys.argv) <= 2: print 'uso:', sys.argv[0], '<nome script> <nome dati>' sys.exit(1) nomescript = sys.argv[1] nomedati = sys.argv[2] if not os.path.exists(nomescript): print nomescript, 'non esiste' sys.exit(2) nomecopia = '{}_{}'.format(nomedati, os.path.basename(nomescript)) print 'creo', nomecopia, f = open(nomescript, 'r') scr = f.read() f.close() cerco = 'NOMEFILE' off = len(cerco) p = scr.find(cerco) while p >= 0: print p, scr = '{}{}{}'.format(scr[0:p], nomedati, scr[p+off:]) p = scr.find(cerco, p + off + 1) g = open(nomecopia, 'w') g.write(scr) g.close() print
Ecco il risultato:
OK.
Conclusioni:
- sembra che funzioni;
- mi rileggo il manuale non vorrei mai che…;
- queste cose si fanno su Ubuntu (TehBoss).
Basta, torno a Go.