Bonjour,
Je cherche actuellement à remplir un ficher CSV avec les données d'un compteur.
Mais n'étant pas un expert en python3, je bloque un peu car j'aimerai avoir dans mon fichier csv le dernier relevé sur la première ligne.
Alors voici ou je suis rendu.
En gros je plante ( erreur: mon programme plante à la deuxième acquisition et me retourne :list index out of range, problème de taille ? je vais taper dans un espace pas encore alloué..?) dans la deuxième fonction dans laquelle j'essaye recopier mes lignes, à la ligne suivante du fichier, bref je suis pas trop sure, de la manière dont attaqué le problème. Y a t'il peut être un mode d'écriture, qui realise mon souhait enfait j'aimerai savoir s'il y a un moyen de se repérer dans mon fichier csv, pour me permettre d'écrire à la première ligne..( j'ai fouiller un peu la doc peut être line_num peut aidé ?).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #!/usr/bin/python3.4.2 # -*- coding: utf-8 -*- import sys import os import time import datetime import subprocess import csv with open("compteur_data.csv","w") as csvfile: date = datetime.datetime.today() wtr=csv.writer(csvfile, delimiter=',') def csvcount(): #elle compte le nombre de ligne with open("compteur_data.csv", 'r') as f: i = 0 for ligne in f: i += 1 return i def lines(j):# elle réecrit les lignes à la ligne du dessous enfin elle devrais je plante toujours dans cette boucle if j == 0 : x=1 elif j != 0: with open("compteur_data.csv", 'r') as f: for ligne in f: i=j with open("compteur_data.csv", 'r') as f1: line=list(f1)[i] f1.close with open("compteur_data.csv", 'w') as f2: i=+1 f2.write(line) f2.close x=1 f.close return x chaine8="mes données" print (chaine8[:-3]) sys.stdout.flush() i = csvcount() x = lines(i) if x==1: wtr.writerow([now,chaine8[:-3]) csvfile.flush() time.sleep(5)
Car même en décalant mes lignes d'une lignes comme je cherche à le faire je ne suis pas sure que la fonction writerow viendra écrire dans la 1er ligne qui sera maintenant vide ou bien qu'il continura à écrire sur la ligne vide la plus basse du fichier.
Merci de votre attention
PS: j'arrive à implémenter mes tabulation donc j'ai mit en lien mon code
Partager