原本
while (inputscore!=-1 and inputscore>=0 and inputscore<=100)
count = count + 1
inputscore = int(input(f"請輸入學生{count}的成績"))
換成
file1 = open('myfile.txt', 'r')
Lines = file1.readlines()
for line in Lines:
count = count + 1
inputscore = int(line)
試試看
保險起見,如果 open()
不搭配 with
敘述使用的話,最好記得使用:file1.close()
關閉檔案存取,避免檔案鎖死等意外。
強烈建議open()要搭配with使用:
with open('myfile.txt', 'r') as file1:
lines = file1.readlines()
...
with ... as ...:
語法稱為context manager,請多利用。
請問,那lines = open('myfile.txt', 'r').readlines()這種語法,系統不會要求close,就不會有當機的危險了吧?
@iiuu:
在作業系統中,打開檔案就會占用系統資源(視狀況還可能會鎖定);如果不明確關閉以釋放,可能會產生意外後果。
例如,lines = open('myfile.txt', 'r').readlines()
:開啟檔案,讀完所有行後將結果 list 指派給 lines
。
這行敘述執行完,此時的 myfile.txt
是 "被開啟而指標位於檔尾" 的狀態;
沒被要求關閉且 GC (Garbage Collector) 沒有去回收(關閉)的話,myfile.txt
的開啟就一直占用系統資源。
而沒有變數能參照 myfile.txt
時,基本上後續流程就無法動它了(除非想挑戰極限、搞得更麻煩?)。
至於會不會出現檔案系統的異常,就要看作業系統與 Python 的 GC 等機制能否在執行期間閃掉各種可能狀況並回收處理掉,不然就有機會增長見識了~(我倒是不想再增長這類見識了~)
另:
感謝大哥!
第二篇寫的很清楚了。