亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

沒有辦法只使用Golang Glob列出目錄嗎?

沒有辦法只使用Golang Glob列出目錄嗎?

Go
當年話下 2022-09-05 10:38:33
Golang Glob的行為方式沒有達到我的預期。假設我有一個具有以下結構的目錄“foo”:foo|-- 1.txt|-- 2.csv|-- 3.json|-- bar`-- baz我想做一個glob,只獲取foo中的目錄“bar”和“baz”。所以我試試這個:path = "foo/*/"matches, err := filepath.Glob(path)if err != nil {    log.Fatal(err)}fmt.Println(matches)這不會生成匹配項:[]如果我刪除最后一個尾部斜杠并將路徑更改為 ,我會同時獲得文件和目錄,這不是我想要的結果:"foo/*"[foo/1.txt foo/2.csv foo/3.json foo/bar foo/baz]我預計如果存在尾部斜杠,Glob 將僅返回與 glob 模式匹配的目錄。我看到GitHub上注意到了同樣的問題,但看不到任何解決方法 - 這聽起來像是一個錯誤,一個文檔拙劣的功能,或者只是缺乏預期的功能。我已經檢查了Go文檔中的Match函數,Glob使用,它沒有提到任何關于尾部斜杠的內容。所以基本上:有沒有一個解決方法,以便我可以使用Glob只用Glob在某個路徑下的目錄,或者我是否需要使用另一種方法來完成這個任務?
查看完整描述

1 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

您可以循環訪問匹配項列表并調用 os。統計他們每個人。操作系統。Stat 返回描述文件的 FileInfo 結構,它包含一個名為 IsDir 的方法,用于檢查文件是否為目錄。示例代碼:


// Note: Ignoring errors.

matches, _ := filepath.Glob("foo/*")

var dirs []string

for _, match := range matches {

    f, _ := os.Stat(match)

    if f.IsDir() {

        dirs = append(dirs, match)

    }

}


查看完整回答
反對 回復 2022-09-05
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號