我在自學《笨辦法學python》,遇到一個疑問。out_file = open(to_file,'w').write(open(from_file).read()),這串代碼為什么沒法執行out_file.close?需要執行.close嗎?為什么?
uj5u.com熱心網友回復:
需要close的,但是你這里回傳的out_file時write的回傳值是一個int帶close可以改成這樣
fw = open(to_file,'w')
fr = open(from_file)
fw.write(fr.read())
fr.close()
fw.close()
不過python里一般用with打開檔案,用with的不用自己close了
with open(to_file,'w') as fw, open(from_file) as fr:
fw.write(fr.read())
uj5u.com熱心網友回復:
謝謝大神回復。是這樣的,我是在用《笨辦法學python3》這本書自學,里面有個習題,原腳本就是一步一步的寫了10行腳本,最后兩行和你寫的一樣,需要用.close。作者說可以把10行代碼寫成一句,就是我寫的那一行,不過最后作者沒有加.close陳述句。所以我有點不明白,簡寫后為什么就不加了。
uj5u.com熱心網友回復:
python里不執行close操作,檔案默認也被close,所以在運行小的腳本程式是,不執行close問題也不大,但是默認的close一般是要等到垃圾回收時,才自動釋放的,如果是在服務里,可能會導致資源過渡使用,導致服務例外,所以執行close操作是更安全的。uj5u.com熱心網友回復:
謝謝了大神
uj5u.com熱心網友回復:
從這里可以看出,你沒有理解物件是什么,這里,open后的是檔案物件,但你后面write后,回傳的不是檔案的物件,而是write后的回傳值,所以不能close,如果是初學,建議一步步寫,這樣少出錯,如果熟悉,理解了之后,可以串起來寫,但也是不建議哈,這樣后面時間一條,看代碼時,或交接給其他同事時,很不方便uj5u.com熱心網友回復:
太感謝了,我就是初學者,代碼寫成一條是作者給的課后習題,所以我就試著去寫了。你寫的非常明白,通俗,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/85407.html
