Ciao Marco,
Il 20/04/2015 14:19, Marco De Paoli ha scritto:
dopo il talk di Alex su codice pythonico/idiomatico...
beh, non posso lasciar passare il seguente caso senza chiedervi un opinione
[snip]
ok, show me the code!
import openpyxl as pyx
from .models import MyModel
CN = XLSX_COLUMN_NAMES
wb = pyx.load_workbook("sample.xlsx"))
ws = wb['DB']
columns = {c.column: CN.get(c.value) for c in ws.rows[0]}
MyModel.objects.all().delete()
for row in ws.rows[1:]:
kwargs = {columns[c.column]: c.value for c in row}
kwargs.pop(None)
MyModel(**kwargs).save()
[snip]
E' quel kwargs.pop(None) che non mi piace
Ci ho girato un po' intorno, ma non mi viene in mente come rimuoverlo a meno di
introdurre degli "if" che mi piacciono ancora meno
Potevi mettere un commento sul perchè lo stai chiamando quel pop, tra un mese
quello è un WTF assicurato. A quanto capisco io è perchè per qualche motivo ti
ritrovi columns[c.column] a None. Questo lo fai probabilmente per prevenire di
esplodere quando hai righe malformate con testo su colonne che non hanno
intestazione. Se è questo non troverei vergogna a mettere un *esplicito* if
c.column in columns nella dict comprehension di kwargs. Ma forse io non sono di
gusti così raffinati :)
P.P.S. boh, mi sa che vi ho dato un po' troppo contesto rispetto al problema
vero e proprio.
Ma diciamo che è stata anche l'occasione per citare qualche tecnologia che mi ha
fatto comodo: openpyxl e ... Django!
hai fatto bene
--
Riccardo Magliocchetti
@rmistaken
http://menodizero.it
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python