【发布时间】:2015-09-14 00:36:02
【问题描述】:
我在这里使用类似于问题的东西:
Python: Undo a Python file readline() operation so file pointer is back in original state
但似乎行为不端。
我的代码:(运行时的值显示为 cmets)
def parse_shell(self, filename):
output = None
with open(self.shells_path + filename) as fp:
first_line = fp.readline()
# first_line = 'Last login: Tue Jun 9 07:13:26 on ttys0'
while len(string.split(first_line, '$')) == 1:
last_pos = fp.tell()
# last_pos = 43
first_line = fp.readline()
# first_line =' 2015-06-09 08:18:23 [coryj@Corys-MacBook-Pro ~]$ ping 10.2.2.1'
fp.seek(last_pos)
for line in fp.readline():
# line = ''
line_chunks = string.split(line, '$')
根据文档,readline() 仅在遇到 EOF 时才应返回空字符串。 这个特定文件超过 200k,所以我不明白为什么我会得到一个空字符串。
【问题讨论】:
-
for line in fp.readline()完全是假的 -
正如@o11c 所说,
for line in fp.readline()会给你行中的字符。所以第一个字符是空格。尝试将其更改为fore lin in fp: -
这确实似乎是问题所在。如果你们中的一位先生或另一位先生愿意将其写为答案,我将非常乐意接受。
-
@user916499 顺便说一句,您可以回答自己的问题。 you even get a badge for it如果你得到足够的支持
-
无关:
first_line是一个误导性名称。你可以改用lines_with_dollar = (line for line in file if '$' in line)。