相关疑难解决方法(0)

Go:"tail -f"式发电机

我在Python中有这个方便的功能:

def follow(path):
    with open(self.path) as lines:
        lines.seek(0, 2)  # seek to EOF

        while True:
            line = lines.readline()
            if not line:
                time.sleep(0.1)
                    continue
                yield line 
Run Code Online (Sandbox Code Playgroud)

它与UNIX类似tail -f:您可以获得文件的最后一行.它很方便,因为您可以在不阻塞情况下获取生成器并将其传递给另一个函数.

然后我不得不在Go做同样的事情.我是这种语言的新手,所以我不确定我所做的是否是惯用/正确的Go.

这是代码:

func Follow(fileName string) chan string {

    out_chan := make(chan string)

    file, err := os.Open(fileName)
    if err != nil {
        log.Fatal(err)
    }

    file.Seek(0, os.SEEK_END)
    bf := bufio.NewReader(file)

    go func() {
        for {
            line, _, _ := bf.ReadLine()

            if len(line) == 0 {
                time.Sleep(10 * time.Millisecond)
            } …
Run Code Online (Sandbox Code Playgroud)

file generator go

10
推荐指数
1
解决办法
767
查看次数

标签 统计

file ×1

generator ×1

go ×1