Je vous remercie beaucoup pour vos intervention, cela ma bien débloqué.
Ce que j'ai appris: (dite moi si je me trompe)
gpio[a]=b est une liste et attend une liste en entrée -> gpio[a]=[b]
gpio[a]=b ne peut crée un nouvelle élément d'une liste mais seulement modifié un élément existant
pour la création de nouvelle élément, uniquement a la suite du dernier élément: gpio.append(b) ou gpio=gpio+[b]
Et je vois pas l'intérêt des paramètres dans csv.reader(...), et pourquoi delimiter vaut '\t' au lieu de ';'
Oui vous avez complètement raison: Mon bureau étant mal ranger, lors de mes tests de la fonction csv.reader, j'avais fait des essais avec des fichier a séparation ';' et 'TAB' et je n'est pas déposé le bon fichier dans mon premier message.
je n'ai pas cherché à comprendre ce que tu veux faire, mais mettre tout le dictionnaire dans la liste me parait curieux.
Le tableau permet de décrire les pines (ou broche,ou bornes) d'une carte électronique.
Chaque pine peuvent être configuré pour plusieurs fonction, les différente fonction sont désigner dans la première ligne du tableau.
pour chaque fonction de la pine, celle-ci aura un usage différent désigné par un nom de la pine décrivant sont usage.
Les broches de la carte étant déterminé et inchangeable, j'utilise une liste pour les classés
Le nom des broches étant variable en fonction de la configuration, je les range dans un dictionnaire afin de pouvoir y accédé plus tard en connaissant la configuration de la broche.
Donc une liste de dictionnaire.
Je me trompe dans mon approche?
Je suis passé a ces codes:
csv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
"GPIO-PINE" "ALIM" "IO" "WiringPi" "I2C" "SDIO" "JTAG" "UART" "PCM" "1-WIRE" "GPCLK"
1 "3.3V"
2 "5V"
3 2 8 "DATA"
4 "5V"
5 3 9 "CLOCK"
6 "GND"
7 4 7 "TDI(ALT5)" "DATA" "GPCLK0"
8 14 15 "TXD"
9 "GND"
10 15 16 "RXD"
11 17 0
12 18 1 "CLK"
13 27 2 "DAT3" "TMS(ALT4)"
14 "GND"
15 22 3 "CLK" "TRST(ALT4)"
16 23 4 "CMD" "RTCK(ALT4)"
17 "3.3V"
18 24 5 "DAT0" "TDO(ALT4)"
19 10 12
20 "GND"
21 9 13 "DAT1"
22 25 6 "TCK(ALT4)"
23 23 14
24 8 10
25 "GND"
26 7 11
27 0 30 "EEPROM DATA"
28 1 31 "EEPROM CLOCK"
29 5 21 "TDO(ALT5)" "GPCLK1"
30 "GND"
31 6 22 "RTCK(ALT5)" "GPCLK2"
32 12 26 "TMS(ALT5)"
33 13 23 "TCK(ALT5)"
34 "GND"
35 19 24 "FS"
36 16 27
37 26 25 "DAT2" "TDI(ALT4)" "DIN"
38 20 28
39 "GND"
40 21 29 "DOUT" |
test.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
import csv, sys
filename = 'gpio2.csv'
with open(filename, newline='') as f:
reader = csv.reader(f,delimiter='\t',quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
datas = [ligne for ligne in reader]
nLigne = 0
dic={}
gpio=[]
try:
for lig in datas:
if nLigne == 0 :
gpio.append(lig)
else:
dic={}
for id in range(len(lig)):
if id>0 and lig[id]!='':
dic[gpio[0][id]]= lig[id]
# gpio[nLigne]=dic #Ligne de code erroné
# gpio=gpio+[dic]
gpio.append(dic)
nLigne = nLigne+1
print(gpio)
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e)) |
Partager