今天準(zhǔn)備把幾個(gè)txt文件合并成一個(gè)文件時(shí),用f.write方法寫入時(shí),發(fā)現(xiàn)程序執(zhí)行完了,本應(yīng)該十萬(wàn)行左右的txt記錄,實(shí)際上只被寫入了4k多行。
網(wǎng)上查了是因?yàn)槌绦驁?zhí)行速度太快,以至于讀到內(nèi)容還沒有完全寫入文件,文件就已經(jīng)關(guān)閉了
方法一:加入緩沖區(qū)
f.flush()//operationos.fsync(output)f.close()
打開文件后執(zhí)行flush(),關(guān)閉文件前執(zhí)行os.fsync()確保緩沖區(qū)的內(nèi)容都寫出去了。
方法二:用sleep
用了上述方法不行,因?yàn)槲以诖蜷_文件后用了迭代輸出,可能會(huì)讓緩沖區(qū)爆炸,在循環(huán)中加入sleep函數(shù)可以確保每次循環(huán)都能將內(nèi)容寫入
with open(outputfile,'a') as output: for i in all_txt_name: f =open(dir+'/'+i) for a in f: output.write(a) time.sleep(0.00000001) f.close()
后來(lái)發(fā)現(xiàn):
txt文件如果太大,在pycharm中只會(huì)顯示一小部分,可能是指顯示了部分文件導(dǎo)致未以為文件沒寫進(jìn)去,fuck
以上這篇淺談python寫入大量文件的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
|
新聞熱點(diǎn)
疑難解答
圖片精選