J'essaye d'analyser un fichier, dans lequel il y a toujours une partie, et la partie précédente est optionnelle.Quitter gracieusement à EOF
for line in finp:
# This part is always present
for _ in range(int(ldata[2])):
sdata = finp.readline()
tdos.write(sdata)
#This part may or may not be present
for i in range(int(atoms)):
next(finp)
for j in range(int(ldata[2])):
aatom[i][j] = [float(x) for x in
finp.readline().strip().split()]
Le problème est, si la partie optionnelle n'est pas présent, next(finp)
donne erreur:
next(finp)
StopIteration
J'ai essayé avec:
for i in range(int(atoms)):
if i is not None:
next(finp)
for j in range(int(ldata[2])):
aatom[i][j] = [float(x) for x in
finp.readline().strip().split()]
else:
break
Mais cela ne résout pas le problème . J'ai trouvé beaucoup de questions précédentes avec la même question comme this, mais incapable de résoudre ce problème.
Est-ce que le seul moyen de le résoudre est de lire tout le fichier et de le traiter?