2005年06月29日 星期三 13:17
我是想为文本数据文件按行建立索引以实现对文本数据行的随机访问,我是这么做的: 建立索引: line = file.readline() while(line): pos = file.tell() index.append(pos) line = file.readline() 访问文件: file.seek(index[row]) #row是要访问的行号 line = file.readline() 但是这里有问题,因为这里读入的行数据和实际数据行不一致,行开头少了若干字符 我的分析: 数据文件是以unix风格的行结尾'\n', tell()函数返回的偏移值是按照以windows风格结尾'\r\n'转化后计算的 所以tell()返回的值要比物理文件的实际位置大,大的数值就是从文件开头 到当前位置的行数(每行增加了一个'\r'字符) 我的问题: 1.到底我的分析对不对? 2.unix和windows保存文本文件到底有啥根本的差异? 请大虾们指教哈,先谢过了 amingsc amingsc at 163.com 2005-06-29
2005年06月29日 星期三 13:05
建 议你参考一下linecache模块,就是干这个用的。很方便 。 在 05-6-29,amingsc<amingsc at 163.com> 写道: > 我是想为文本数据文件按行建立索引以实现对文本数据行的随机访问,我是这么做的: > 建立索引: > line = file.readline() > while(line): > pos = file.tell() > index.append(pos) > line = file.readline() > 访问文件: > file.seek(index[row]) #row是要访问的行号 > line = file.readline() > 但是这里有问题,因为这里读入的行数据和实际数据行不一致,行开头少了若干字符 > > 我的分析: > 数据文件是以unix风格的行结尾'\n', > tell()函数返回的偏移值是按照以windows风格结尾'\r\n'转化后计算的 > 所以tell()返回的值要比物理文件的实际位置大,大的数值就是从文件开头 > 到当前位置的行数(每行增加了一个'\r'字符) > > 我的问题: > 1.到底我的分析对不对? > 2.unix和windows保存文本文件到底有啥根本的差异? > 请大虾们指教哈,先谢过了 > amingsc > amingsc at 163.com > 2005-06-29 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年06月29日 星期三 13:31
2.unix和windows保存文本文件到底有啥根本的差异? 0x0D0x0A与0x0D或者0x0D0x0D0x0A的区别
2005年06月29日 星期三 13:54
就是\n和\r\n的区别 在 05-6-29,alang yin<alang.yl at gmail.com> 写道: > 2.unix和windows保存文本文件到底有啥根本的差异? > > 0x0D0x0A与0x0D或者0x0D0x0D0x0A的区别 > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年06月29日 星期三 17:29
我曾经分析过大型host上下来的0x0D0x0D0x0A行结尾的txt,看来是特例。
Zeuux © 2025
京ICP备05028076号