第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在 Go 中跳轉(zhuǎn)到文件中的特定行

在 Go 中跳轉(zhuǎn)到文件中的特定行

Go
溫溫醬 2021-12-13 18:16:14
在 Go 中是否可以跳轉(zhuǎn)到文件中的特定行號并刪除它?類似于python 中的linecache 的東西。我正在嘗試匹配文件中的一些子字符串并刪除相應(yīng)的行。我已經(jīng)處理的匹配部分,我有一個包含行號的數(shù)組,我需要刪除,但我一直在思考如何刪除文件中的匹配行。
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個贊

這是一個老問題,但如果有人正在尋找解決方案,我編寫了一個包來處理文件中的任何行。鏈接在這里。它可以打開一個文件并搜索到任何行位置,而無需將整個文件讀入內(nèi)存并進(jìn)行拆分。


import "github.com/stoicperlman/fls"


// This is just a wrapper around os.OpenFile. Alternatively 

// you could open from os.File and use fls.LineFile(file) to get f

f, err := fls.OpenFile("test.log", os.O_CREATE|os.O_WRONLY, 0600)

defer f.Close()


// return begining line 1/begining of file

// equivalent to f.Seek(0, io.SeekStart)

pos, err := f.SeekLine(0, io.SeekStart)


// return begining line 2

pos, err := f.SeekLine(1, io.SeekStart)


// return begining of last line

pos, err := f.SeekLine(0, io.SeekEnd) 


// return begining of second to last line

pos, err := f.SeekLine(-1, io.SeekEnd) 

不幸的是,我不確定您將如何刪除,這只是讓您到達(dá)文件中的正確位置。對于您的情況,您可以使用它轉(zhuǎn)到要刪除的行并保存位置。然后尋找下一行并保存。您現(xiàn)在有要刪除的行的書擋。


// might want lineToDelete - 1

// this acts like 0 based array

pos1, err := f.SeekLine(lineToDelete, io.SeekStart)


// skip ahead 1 line

pos2, err := f.SeekLine(1, io.SeekCurrent)


// pos2 will be the position of the first character in next line

// might want pos2 - 1 depending on how the function works

DeleteBytesFromFileFunction(f, pos1, pos2)


查看完整回答
反對 回復(fù) 2021-12-13
?
喵喵時光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個贊

根據(jù)我對 linecache 模塊的讀取,它需要一個文件并將其分解為基于 '\n' 行結(jié)尾的數(shù)組。您可以使用strings或bytes復(fù)制 Go 中的相同行為。您還可以使用bufio庫逐行讀取文件,并僅存儲或保存所需的行。


package main


import (

    "bytes"

    "fmt"

)

import "io/ioutil"


func main() {


    b, e := ioutil.ReadFile("filename.txt")

    if e != nil {

        panic(e)

    }

    array := bytes.Split(b, []byte("\n"))


    fmt.Printf("%v", array)

}


查看完整回答
反對 回復(fù) 2021-12-13
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊

我編寫了一個小函數(shù),允許您從文件中刪除特定行。


package main


import (

    "io/ioutil"

    "os"

    "strings"

)


func main() {

    path := "path/to/file.txt"

    removeLine(path, 2)

}


func removeLine(path string, lineNumber int) {

    file, err := ioutil.ReadFile(path)

    if err != nil {

        panic(err)

    }


    info, _ := os.Stat(path)

    mode := info.Mode()


    array := strings.Split(string(file), "\n")

    array = append(array[:lineNumber], array[lineNumber+1:]...)

    ioutil.WriteFile(path, []byte(strings.Join(array, "\n")), mode)

}


查看完整回答
反對 回復(fù) 2021-12-13
  • 3 回答
  • 0 關(guān)注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號