弱智问题一条,for line in open(*)里面一行一行的读文件,但其中突然想临时引用一下前一行的内容,该怎么引用捏?

1 CoX Dec 17, 2012 搞个中间变量存一下 |
2 ritksm Dec 17, 2012 .seek(tell()-1)?.... |
3 ritksm Dec 17, 2012 不过中间变量好像方便些... |
4 ritksm Dec 17, 2012 不对。。。忽略第一条。。。那个貌似是offset的不是行- - |
6 unfurl Dec 17, 2012 for n, line in enumerate(open(file, 'r').readlines()) |
7 likuku Dec 17, 2012 open()打开的文件对象没找到index属性,但可以转换为list对象后就可以使用index()来获得当前元素对应的index,当然也可以直接使用list[index]来访问当前元素,或者list[index-1]来访问前一个元素. line_src = open ("t") line_list = line_src.readlines() for line in line_list: index_currnet_line = line_list.index(line) if index_currnet_line > 0: last_line = line_list[index_currnet_line-1] |
10 geekard Dec 17, 2012 for line in open(*),这里的open()生成的是匿名文件对象,没法直接引用,能获得的就是下一行内容。即使有文件对象f,还需要知道上一行的字符数,这样才能seek()去。 |
11 ivenvd Dec 17, 2012 记得 open(*) 在这种语境已经返回迭代器而不是文件对象了,所以只能中间变量了吧。 |
12 xuwenbao Dec 18, 2012 >>> import linecache >>> linecache.getline('/etc/passwd', 4) 'sys:x:3:3:sys:/dev:/bin/sh\n' |
13 sykp241095 Dec 18, 2012 请问iterator支持回退么。 |