日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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

Read字節方式

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

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循環讀取文件的字節內容,然后算出文件的大小,這樣時也是最不能用的辦法,因為效率低,代碼量大。

ioutil方式

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

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

通過ioutil.ReadFile函數,我們三行代碼就可以搞定,的確方便很多,但是效率慢的問題依然,存在,如果是個很大的文件呢?

Stat方法

繼續再進一步,我們不讀取文件的內容來計算了,我們通過文件的信息

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

這種方式不會再讀取文件的內容,而是通過Stat方法直接獲取,速度會非常快,尤其對于大文件尤其有用。但是它還不是我們今天要講的終極辦法,因為它還是會打開文件,會占用它。

終極方案

好了,我們的終極方案終于要登場了,他的代碼也非常簡單。

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

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

獲取文件信息

通過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())} }

運行這段代碼看下結果:

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

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

判斷文件是否存在

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

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

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來判斷一個文件不存在。最后else的可能性比較少,這個時候可以看下具體的錯誤是什么,再根據錯誤來判斷文件是否存在。

小結

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

精品文章推薦

本文為原創文章,轉載注明出處,歡迎掃碼關注公眾號flysnow_org或者網站 https://www.flysnow.org/,第一時間看后續精彩文章。覺得好的話,請順手點個贊吧。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。