是否有Python fileinput.input的Go类似物?
import fileinput
for line in fileinput.input():
process(line)
这可以让您的程序像grep
一样工作,即。它可以从comma行[{1}}指定的文件或标准输入program input.txt
中读取。
Perl的钻石操作员cat input.txt | program
和Ruby的ARGF是相似的。
答案 0 :(得分:2)
你有几个选择。虽然fileinput.input()
函数也会检查sys.args[1:]
是否有任何文件名,但我将在这里专注于从stdin读取。
使用Scanner
。文档示例(http://play.golang.org/p/_Nar8-uBDs):
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text()) // Println will add back the final '\n'
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
}
较低级别的替代方案是bufio.Reader
及其ReadString()
方法(http://play.golang.org/p/h2sobrWNYd):
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
rbuf := bufio.NewReader(os.Stdin)
for {
line, err := rbuf.ReadString('\n')
fmt.Print(line)
if err != nil {
// line contains the last remaining characters or is empty
// it is only empty if '\n' was the last character in the input
break
}
}
}
对于最低级别的替代方案,请参阅ReadLine()
。
答案 1 :(得分:0)
不,标准库中没有Go类似的东西。但是,读取stding或命名文件只是少数几行(example)