日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python3 获取file大小_Go语言 | 你还在这样获取文件的大小吗?

發(fā)布時(shí)間:2025/3/15 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 获取file大小_Go语言 | 你还在这样获取文件的大小吗? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在項(xiàng)目中,我們可能會(huì)需要獲取一個(gè)文件的大小,在Golang(Go語言)中,有很多方法來獲取一個(gè)文件的大小,看看你是否還在用最慢的方式。

Read字節(jié)方式

第一種,是最直觀會(huì)想到的,也就是打開文件,把文件讀取一遍。

func main() {file,err:=os.Open("water")if err ==nil {sum := 0buf:=make([]byte,2014)for {n,err:=file.Read(buf)sum+=nif err==io.EOF {break}}fmt.Println("file size is ",sum)} }

這種方式需要打開文件,通過for循環(huán)讀取文件的字節(jié)內(nèi)容,然后算出文件的大小,這樣時(shí)也是最不能用的辦法,因?yàn)樾实?#xff0c;代碼量大。

ioutil方式

上面的代碼比較啰嗦,這時(shí)候我們可能想到了使用ioutil包的ReadFile來代替,直接獲得文件的內(nèi)容,進(jìn)而計(jì)算出文件的大小。

func main() {content,err:=ioutil.ReadFile("water")if err == nil {fmt.Println("file size is ",len(content))} }

通過ioutil.ReadFile函數(shù),我們?nèi)写a就可以搞定,的確方便很多,但是效率慢的問題依然,存在,如果是個(gè)很大的文件呢?

Stat方法

繼續(xù)再進(jìn)一步,我們不讀取文件的內(nèi)容來計(jì)算了,我們通過文件的信息

func main() {file,err:=os.Open("water")if err == nil {fi,_:=file.Stat()fmt.Println("file size is ",fi.Size())} }

這種方式不會(huì)再讀取文件的內(nèi)容,而是通過Stat方法直接獲取,速度會(huì)非常快,尤其對(duì)于大文件尤其有用。但是它還不是我們今天要講的終極辦法,因?yàn)樗€是會(huì)打開文件,會(huì)占用它。

終極方案

好了,我們的終極方案終于要登場(chǎng)了,他的代碼也非常簡(jiǎn)單。

func main() {fi,err:=os.Stat("water")if err ==nil {fmt.Println("file size is ",fi.Size(),err)} }

是的,也只需要三行代碼即可實(shí)現(xiàn),這里使用的是os.Stat,通過他可以獲得文件的元數(shù)據(jù)信息,現(xiàn)在我們看看它能獲取到哪些信息。

獲取文件信息

通過os.Stat方法,我們可以獲取文件的信息,比如文件大小、名字等。

func main() {fi,err:=os.Stat("water")if err ==nil {fmt.Println("name:",fi.Name())fmt.Println("size:",fi.Size())fmt.Println("is dir:",fi.IsDir())fmt.Println("mode::",fi.Mode())fmt.Println("modTime:",fi.ModTime())} }

運(yùn)行這段代碼看下結(jié)果:

name: water size: 403 is dir: false mode:: -rw-r--r-- modTime: 2018-05-06 18:52:07 +0800 CST

以上就是可以獲取到的文件信息,還包括判斷是否是目錄,權(quán)限模式和修改時(shí)間。所以我們對(duì)于文件的信息獲取要使用os.Stat函數(shù),它可以在不打開文件的情況下,高效獲取文件信息。

判斷文件是否存在

os.Stat函數(shù)有兩個(gè)返回值,一個(gè)是文件信息,一個(gè)是err,通過err我們可以判斷文件是否存在。

首先,err==nil的時(shí)候,文件肯定是存在的;其次err!=nil的時(shí)候也不代表不存在,這時(shí)候我們就需要進(jìn)行嚴(yán)密的判斷。

func main() {_,err:=os.Stat(".")if err ==nil {fmt.Println("file exist")}else if os.IsNotExist(err){fmt.Println("file not exist")}else{fmt.Println(err)} }

通過os.IsNotExist來判斷一個(gè)文件不存在。最后else的可能性比較少,這個(gè)時(shí)候可以看下具體的錯(cuò)誤是什么,再根據(jù)錯(cuò)誤來判斷文件是否存在。

小結(jié)

os.Stat是一個(gè)非常好的函數(shù),可以讓我們非常高效的獲取文件信息,所以在項(xiàng)目中盡可能的使用它。

精品文章推薦

本文為原創(chuàng)文章,轉(zhuǎn)載注明出處,歡迎掃碼關(guān)注公眾號(hào)flysnow_org或者網(wǎng)站 https://www.flysnow.org/,第一時(shí)間看后續(xù)精彩文章。覺得好的話,請(qǐng)順手點(diǎn)個(gè)贊吧。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python3 获取file大小_Go语言 | 你还在这样获取文件的大小吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。