一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

手把手教你用Go語言開發(fā)一款簡易目錄生成器

 Python進階者 2023-02-10 發(fā)布于廣東

回復“Go語言”即可獲贈從入門到進階共10本電子書

日暮漢宮傳蠟燭,輕煙散入五侯家。

前言

有時候,我看著我的目錄,或者我想找個文件時,尤其是目錄很多時,總是有點難受。

比如這個目錄,是我的一個教程目錄。

但是我并不能一目了然的知道每個文件夾下都有啥,并且每次找一個文件也很費事。

所以,基于上述的需求,使用Go語言,終于擼了個目錄生成器,感覺還行。

實現(xiàn)的效果

通過編寫的腳本,可以將目錄整合成.txt文件,并且下級目錄使用4個空格縮進。

代碼

先別管怎么實現(xiàn)的,先看代碼。

package main
import ( "bytes" "flag" "fmt" "io/ioutil" "os" "path/filepath")
func GenderNSymbol(char byte, count int) string { symbolSince := bytes.Repeat([]byte{char}, count) var symbol = string(symbolSince) return symbol}
// @title GenderDirTree// @description 生成目錄樹// @param path string "需要生成的目錄"// @param count int "生成相同字符的個數(shù)"// @param char byte "生成相同字符的字符"// @param current_tier int "當前層數(shù)"// @param end_tier int "終止層數(shù)"// @param fileObj int "文件對象"// @return 無 無 "無"func GenderDirTree(path string, count int, char byte, current_tier int, end_tier int, fileObj *os.File) { if !(current_tier < end_tier) && end_tier != 0 { return} current_tier++ files, err := ioutil.ReadDir(path) if err != nil { fmt.Println("錯誤:目錄錯誤") return} for _, file := range files { var name = file.Name() //生成指定數(shù)目的相同符號 var plac = GenderNSymbol(char, count) //符號+目錄 var sname = fmt.Sprintf("%s%s\n", plac, name) //輸出當前目錄 fileObj.WriteString(sname) //fmt.Println(sname) //判斷是否為目錄,如果是,繼續(xù)下次遞歸 var isDir = file.IsDir() if isDir { //拼接傳入的目錄和循環(huán)的當前目錄 var nerPaht = filepath.Join(path, name) GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj) }}}
func main() { //終止層數(shù),0表示無限層,>0表示指定層數(shù) var end_tier int //輸入的目錄 //var path = `D:\0_教程\易錦教程` var path string flag.StringVar(&path, "path", "", "目錄") flag.IntVar(&end_tier, "tier", 0, "終止層數(shù)") flag.Parse() //文件對象 var wDirPath = filepath.Join(path, "目錄.txt") fileObj, _ := os.OpenFile(wDirPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) defer fileObj.Close() //生成目錄樹 GenderDirTree(path, 0, ' ', 0, end_tier, fileObj)}

去掉注釋,其實也就30行代碼,就實現(xiàn)了這個功能。

實現(xiàn)的功能

  • 自定義要生成的目錄。

  • 自定義生成目錄終止的層數(shù)。

打包

go build main.go

-help

采用flag包動態(tài)控制參數(shù),參數(shù)如下。

d:>main.exe -hUsage of main.exe:  -path string        目錄  -tier int        終止層數(shù)

運行

語法

main.exe -path <要生成的目錄> -tier <終止層級>注意:-tier,終止層數(shù),0表示無限層,>0表示指定層數(shù),默認為0

示例

此處-tier指定的是0,表示無限制生成,如果指定是1,就表示生成一層。

結果

會在要生成的目錄下,多出一個目錄.txt。

打開如下

主要代碼理解

flag

fileObj

判斷是否為目錄,遞歸

總結

本次更像是日常使用中,為了解決實際問題的腳本,其實腳本使用Python更好。

但是Go有一個更大的優(yōu)勢就是可以編譯為exe

這次的難點主要是理解遞歸,自己調(diào)自己!

如果在操作過程中有任何問題,記得下面留言,我們看到會第一時間解決問題。

如果你覺得文章還可以,記得點贊留言支持我們哈。感謝你的閱讀,有問題請記得在下方留言噢~

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产亚洲视频香蕉一区| 亚洲性生活一区二区三区| 欧美日韩最近中国黄片| 精品一区二区三区不卡少妇av| 久久精品一区二区少妇| 国产盗摄精品一区二区视频| 日本人妻丰满熟妇久久| 高清不卡视频在线观看| 国产精品成人又粗又长又爽| 国产免费一区二区不卡| 青草草在线视频免费视频| 亚洲专区一区中文字幕| 国产二级一级内射视频播放| 国产精品一区日韩欧美| 激情少妇一区二区三区| 粉嫩一区二区三区粉嫩视频| 日韩成人午夜福利免费视频| 亚洲av熟女一区二区三区蜜桃| 日韩精品免费一区三区| 欧洲一级片一区二区三区| 欧美大胆美女a级视频| 中文字幕区自拍偷拍区| 内射精子视频欧美一区二区| 天堂网中文字幕在线视频| 国产精品视频一级香蕉| 黄色片国产一区二区三区| 亚洲精品有码中文字幕在线观看| 欧美成人黄色一区二区三区| 精品少妇人妻av一区二区蜜桃 | 日本人妻精品中文字幕不卡乱码 | 超薄丝袜足一区二区三区| 四季精品人妻av一区二区三区| 国产又粗又深又猛又爽又黄| 国产内射一级一片内射高清| 麻豆剧果冻传媒一二三区| 亚洲天堂一区在线播放| 久久久精品区二区三区| 日本 一区二区 在线| 亚洲国产成人精品一区刚刚| 中文字幕日韩精品人一妻| 国产a天堂一区二区专区|