gpt4 book ai didi

go - 如何捕获输出并将其发送到文件

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:25 26 4
gpt4 key购买 nike

我有一个执行某些处理的程序,我想提供将输出保存到文件的选项,但是,我找不到执行此操作的最佳方法。

if (strings.ToLower(input2) == "y") || (strings.ToLower(input2) == "yes") {
fmt.Println("\nOutputting to file, please wait... ")
oldSt := os.Stdout //Create backup of old Stdout
newFil, _ := os.Create(input+"txt")

os.Stdout = newFil
table.Render()

os.Stdout = oldSt
fmt.Println("\nComplete!")
}

这是我当前的代码,但它似乎只是打印到控制台而没有重定向到文件。

我正在使用这个包创建一个表,这是我试图输出到文件的内容。

https://github.com/olekukonko/tablewriter

是否有更好的输出到文件的方法,或者因为我正在调用库函数,所以它会是一种不同的写入方法吗?

最佳答案

为什么要将 os.Stdout 更改为您的库文件?您正在使用的 tablewriter 包似乎接受了您希望它使用的 io.Writer:

package main

import (
"fmt"
"log"
"os"

"github.com/olekukonko/tablewriter"
)

func main() {
fmt.Println("Outputting to file, please wait...")
f, err := os.Create("mahfile.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()

table := tablewriter.NewWriter(f)
table.Render()
}

https://play.golang.org/p/4L5Qu2SA4Uy

显然您可能需要以不同的顺序声明事物,但我不建议更改 os.Stdout 的预期功能来实现您的目标。他们只是将其用作占位符,供您覆盖。


但是,要回答您的问题:当您初始化 tablewriter.NewWriter(os.Stdout) 时,您为它提供了一份到 STDOUT 的 io.Writer 的副本 -稍后在您的应用程序中替换 os.Stdout 不会撤消此操作。

为了完成你想要的,你需要提供一个不同的作家,如果需要的话,他可以在可能发生的时候意识到这种变化(见第一个答案)

关于go - 如何捕获输出并将其发送到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com