Chcę dokonać konwersji pliku w formacie CSV zawierającego takie linie:
111117_055958,b8:27:eb:da:ef:6d,0,b8:27:eb:8f:ba:38,192.168.1.10,171110_163200,19,0,0,562,18.7,50.1,ON,OFF,44.0,6593,3697,-2.700629,X,
na plik JSON o postaci:
[
"Nazwa_1" : "Wartość_1"
"Nazwa_2" : "Wartość_2"
"Nazwa_3" : "Wartość_3"
itd
]
Oto mój kod w Pythonie. Założeniem jest że działa to w pipeline stąd pobiera dane z stdin i wyrzuca na stdout Linie zahashowane to efekt moich prób
#!/usr/bin/env python
import csv, json , sys
fieldnames = ("Time","MAC_ETH","IP_ETH","MAC_WiFi","IP_WiFi","Up_time","Winsen","ADC_2","ADC_3","VOC","Temp","Humidity","Internet","Lampa_UV","CPU_temp","Amph_P1","Amph_P2","PT100","Brak")
reader = csv.DictReader(sys.stdin)
for row in reader:
print(json.dumps(fieldnames, indent=19))
# json.dump(row, sys.stdout)
# sys.stdout.write(%s % row)
# sys.stdout.write('\n')
Program wyświetla poprawnie nazwy parametrów ale nie wyświetla ich wartości. Jak poniżej:
[
"Time",
"MAC_ETH",
"IP_ETH",
"MAC_WiFi",
"IP_WiFi",
"Up_time",
"Winsen",
"ADC_2",
"ADC_3",
"VOC",
"Temp",
"Humidity",
"Internet",
"Lampa_UV",
"CPU_temp",
"Amph_P1",
"Amph_P2",
"PT100",
"Brak"
]
Co muszę zmienić w kodzie aby poszczególne linie miały taką postać jak w wcześniej przytoczonym przykładzie?