Invece del link

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

tpl

Ecco il risultato:

meld

OK.

Conclusioni:

  • sembra che funzioni;
  • mi rileggo il manuale non vorrei mai che…;
  • queste cose si fanno su Ubuntu (TehBoss).

Basta, torno a Go.

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: