创建一个测试文件,用golang和python逐行读取,输出每行的偏移,测试结果如下:
python
#!/usr/bin/env python import sys import os def main(): input = open("test.file"); input.seek(0) while True: pos = input.tell() line = input.readline() line = line.strip() #trim the last "\n" if not line: break print pos return 0 if __name__ == '__main__': sys.exit(main())
输出结果如下:
root:~ # python test.py 0 315 510 820 1130 1510 1898 2218 2538 2858 3178 3493 3807 4213 4625 5037 5449 5800
golang(go version go1.1 linux/amd64)
package main import ( "fmt" "os" "io" "bufio" ) func main() { f, err := os.Open("test.file") if err != nil { fmt.Println(err) return } br := bufio.NewReader(f) for { _ , err := br.ReadBytes('\n') pos, _ := f.Seek(0, os.SEEK_CUR) if err == io.EOF { return } else { fmt.Println(pos) } } }
输出结果如下
root:~ # go run test.go 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 7903 7903 7903 7903 7903 7903 7903 7903 7903 7903 7903 11944
不知道是不是用了bufio的缘故,使得获取偏移不精确,还没找到解决办法。
相关推荐
weixin-golang-sdk 微信golang工具包
build-web-application-with-golang-en. build-web-application-with-golang-en. build-web-application-with-golang-en.
fluent-logger-golang, 用于Fluentd的结构化记录器( Golang ) fluent-logger-golang Fluentd ( Golang ) 结构化事件记录器如何安装go get github.com/fluent/fluent-logger-golang/fluent
build-web-application-with-golang-zh.pdf go web编程学习资料
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
moss - 一个golang的简单、快速、有序、可持久化,key-val存储库
Gopypi:采用golang编写的私有python包索引
go-ole - golang的Win32 OLE实现
build-web-application-with-golang-master.zip github上一本golang书的源文件获取后压缩
开源项目-lacion-cookiecutter-golang.zip,戈朗的基本项目模板,有点固执己见。
zk-sniffer:使用golang嗅探和解析ZooKeeper数据包
telegram-bot-api - Golang绑定Telegram Bot API
开源项目-nanobox-io-golang-scribble.zip,一个很小的json平面文件存储
mailck - golang库用于实现基于smtp的email校验
开源项目-adililhan-Zabbix-Desktop-Notification-with-Golang.zip,使用Golang的Zabbix桌面通知
Ansible-ansible-role-golang.zip,安装go语言sdk ansible角色:go语言sdk,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
开源项目-NanXiao-golang-101-hacks.zip,Golang 101黑客
好书不需介绍,急需者自知价值
go-nmea - Golang的NMEA解析器库
Atom-atom-ide-golang.zip,Go language support for Atom-IDEIDE Golang Atom包·,atom是一个用web技术构建的开源文本编辑器。