J'ai le fichier et le code suivants qui fonctionnent très bien, mais (voir ci-dessous) en utilisant les mêmes méthodes, le deuxième extrait de code avec le fichier donné, génère une erreur.Anomalie dans la lecture du fichier csv colonne
Code de travail
def test():
with open('test.txt','r') as f:
reader=csv.reader(f)
for row in reader:
print(row[0]) #this is column 1
answer=input("Answer?>>")
if answer==row[1]: #this is column 2
print("Yes")
else:
print("No")
Contenu du fichier
a,1
b,2
c,3
sortie fonctionnement correct
>>> test()
a
Answer?>>1
Yes
b
Answer?>>2
Yes
c
Answer?>>
Cependant, le code suivant ne fonctionne pas:
def round():
print("===Summary===")
with open('eventinfo.txt','r',newline="") as f:
reader=csv.reader(f)
for row in reader:
print(row[0])
Contenu du fichier: (la ligne supplémentaire entre les enregistrements semble avoir été créé lors de l'écriture dans le fichier)
1,Techhamper,9,9,9,9,9,27
1,Moosecream,8,8,8,8,8,24
1,BizTech,6,6,6,6,6,18
1,Pigacheepot,1,1,1,1,1,3
2,Techhamper,1,1,1,1,1,3
2,Moosecream,2,2,2,2,2,6
Erreur:
print(row[0])
IndexError: list index out of range
Le code qui écrit dans ce fichier est le suivant:
with open("eventinfo.txt","a") as fo:
writer=csv.writer(fo)
writer.writerow([round,inventor,i1,i2,i3,i4,i5,totalscore])
Pour une réponse, je serais très heureux si:
Une solution/solution de l'erreur dans le code qui lit le fichier (comment dépouiller le nouveau personnage le plus efficace de la ligne)
De plus, quelle est la meilleure façon d'ajouter ou de réécrire mon ' write 'code, pour créer plus efficacement le contenu du fichier (pour être comme le premier qui n'a pas le retour à la ligne entre chaque enregistrement) en premier lieu.
Merci à l'avance
j'ai enlevé le newline = "" dans le code de lecteur et ai essayé newline = Aucun, mais aucun travaillé – MissComputing
je ne peux pas voir comment les lignes vierges sont créées non plus ... n'importe qui n'importe qui ??? Et non, malheureusement, je n'utilise que le même système d'exploitation – MissComputing
Est-il possible que 'totscore' se termine par un saut de ligne? – Barmar