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

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

嘗試將提取的文件名插入單個文件

嘗試將提取的文件名插入單個文件

Go
慕森王 2022-05-18 16:16:51
該程序獲取目錄名稱并在此之后讀取目錄中的所有文件我正在收集文件的名稱并嘗試將所有文件名插入一個新文件但我只得到最后一個索引,我想存儲所有文件名到單個文件中。package mainimport (    "flag"    "fmt"    "log"    "os"    "regexp")func readCurrentDir(folderpath string) {    file, err := os.Open(folderpath)    if err != nil {        log.Println("failed opening directory: ", err)        os.Exit(1)    }    defer file.Close()    list, _ := file.Readdirnames(0) // 0 to read all files and folders    for _, name := range list {        getDomainFromFile(name)    }}func CreateDomainsFile(domains string) {    filename, err := os.Create("All-Sitemap-Domains.txt")    if err != nil {        log.Println("Error to create txt file", err)    }    defer filename.Close()    writestrings, err := filename.WriteString(domains)    if err != nil {        log.Println("Error to append data into txt file", err)    }    log.Println("Successfully data insetred into txt file")    fmt.Printf("wrote %d bytes\n", writestrings)    filename.Sync()}func getDomainFromFile(PageContent string) {    re := regexp.MustCompile(`(.*)-robots.txt`)    // re := regexp.MustCompile(`Sitemap: (.*)`)    FileToDomain := re.FindAllStringSubmatch(PageContent, -1)    for _, Domain := range FileToDomain {        log.Println(Domain[1])        // log.Println(Domain[1])        fmt.Println("*************************************************************")        CreateDomainsFile(string(Domain[1]))        return    }}func main() {    folder := flag.String("f", "", "Provide the path of the folder")    flag.Parse()    readCurrentDir(*folder)}
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

首先,您可以將所有文件讀入一個數組:


// ListFile is delegated to find the files from the given directory, recursively for each dir

func ListFile(path string) []string {

    fileList := []string{}

    // Read all the file recursively

    err := filepath.Walk(path, func(file string, f os.FileInfo, err error) error {

        if IsFile(file) {

            fileList = append(fileList, file)

        }

        return nil

    })

    if err != nil {

        log.Println(err)

        return nil

    }

    return fileList

}

比你可以逐行編寫文件:


func writeFile(data []string){

    f, err := os.OpenFile("All-Sitemap-Domains.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

    if err != nil {

        log.Println("Error to create txt file", err)

        return

    }

    defer f.Close()

    for i := range data{

       f.WriteString(data[i]+"\n")        

    }

}


查看完整回答
反對 回復 2022-05-18
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

您一次又一次地創建文件,這就是您只獲得最后一個值的原因,如果您想插入值,請使用它


文件名,os.O_APPEND|os.O_CREATE|os.O_WRONLY,0644



import (

    "flag"

    "fmt"

    "log"

    "os"

    "regexp"

)


func readCurrentDir(folderpath string) {

    file, err := os.Open(folderpath)

    if err != nil {

        log.Println("failed opening directory: ", err)

        os.Exit(1)

    }

    defer file.Close()


    list, _ := file.Readdirnames(0) // 0 to read all files and folders

    for _, name := range list {

        getDomainFromFile(name)

    }

}



func CreateDomainsFile(domains string) {

    filename, err := os.OpenFile("All-Sitemap-Domains.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

    if err != nil {

        log.Println("Error to create txt file", err)

    }

    defer filename.Close()

    writestrings, err := filename.WriteString(domains + "\n")

    if err != nil {

        log.Println("Error to append data into txt file", err)

    }

    log.Println("Successfully data insetred into txt file")

    fmt.Printf("wrote %d bytes\n", writestrings)

    filename.Sync()

}


func getDomainFromFile(PageContent string) {

    re := regexp.MustCompile(`(.*)-robots.txt`)

    FileToDomain := re.FindAllStringSubmatch(PageContent, -1)

    for _, Domain := range FileToDomain {

        log.Println(Domain[1])

        fmt.Println("*************************************************************")

        CreateDomainsFile(string(Domain[1]))

        return

    }


}

func main() {

    // http.HandleFunc("/", index_handler)

    // http.HandleFunc("/sitemap_Domains/", showData)

    // fmt.Println("Development Server Started localhost:8081")

    // http.ListenAndServe(":8081", nil)


    folder := flag.String("f", "", "Provide the path of the folder")

    flag.Parse()

    readCurrentDir(*folder)


}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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