Ciao a tutti, e' da un po' di tempo che utilizzo doctest, e sono felice :).
Lo trovo molto comodo per scrivere funzioni che calcolano statistiche e parsano particolari formati di files. Quello che non capisco ancora e' come utilizzarlo per testare funzioni che prendano in input il nome (path) di un file, e lo aprano. Qualcosa del genere: --- >>> def read_first_line(filename): ... fh = file(filename, 'r') ... for line in fh: ... do things... --- (mi dispiace per il modo in cui gmail formattera' questo messaggio :( ). Una possibile opzione e' utilizzare StringIO. Il problema e' che gli oggetti StringIO non hanno un equivalente di un filename che si possa passare ad una funzione, quindi sono costretto a scrivere moduli che prendano in input file handlers invece che file names. --- def read_first_line(fh): """ >>> from StringIO import StringIO >>> fh = StringIO('contenuto del file') >>> read_first_line(fh) contenuto del file """" print fh.readline() --- Una seconda opzione e' quella di usare tempfile.NamedTemporaryFile. Il problema e' che e' una opzione un poco brutta esteticamente, che aggiunge un sacco di istruzioni non necessarie nella documentazione (incasinandola). --- def read_first_line(filename): """ >>> from tempfile import NamedTemporaryFile >>> fh = NamedTemporaryFile() >>> fh.write('contenuto del file') >>> fh.seek(0) >>> read_first_line(fh.name) contenuto del file """ fh = file(filename) print fh.readline() --- Sul serio, chiedo scusa per la maniera con cui questo messaggio verra' formattato da google. Se non e' comprensibile, lo posto da qualche parte. In parole povere, io sto cercando una funzione che mi permetta di creare un oggetto simile ad un file, che sia accessibile tramite un filename, di scriverci dentro del testo, e di riavvolgerlo al primo bit, e tutto questo in una o due istruzioni. Qualche suggerimento? -- My blog on bioinformatics (now in English): http://bioinfoblog.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python