我想解析一個文件,其中有一部分總是存在,而過去的部分是可選的。在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()]
問題是,如果可選擇部分不存在,next(finp)
是給錯誤:
next(finp)
StopIteration
我曾嘗試用:
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
但是,這並沒有解決問題。我發現了很多以前的問題,像this一樣的問題,但無法解決這個問題。
解決問題的唯一方法就是接受的答案是一次讀取整個文件然後處理?