是否有 Python 的fileinput.input的 Go 类似物?
import fileinput
for line in fileinput.input():
process(line)
这可以让你的程序像grep
ie 一样工作。它可以从命令行指定的文件program input.txt
或标准输入中读取cat input.txt | program
。
Perl 的菱形运算符<>
和 Ruby 的 ARGF 类似。
是否有 Python 的fileinput.input的 Go 类似物?
import fileinput
for line in fileinput.input():
process(line)
这可以让你的程序像grep
ie 一样工作。它可以从命令行指定的文件program input.txt
或标准输入中读取cat input.txt | program
。
Perl 的菱形运算符<>
和 Ruby 的 ARGF 类似。
你有几个选择。尽管该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()
。
不,标准库中没有类似的 Go。但是,读取标准或命名文件只是几行(示例)