2016-09-09 74 views
0

这是我通过使用f.seek()方法寻找位置来从文件中获取行的代码,但我得到了错误的输出。它从第一行的中间打印。 可以帮我解决这个问题吗?如何通过从python中的另一个文本文件寻找位置来打印文件中的行?

f=open(r"sample_text_file","r") 
last_pos=int(f.read()) 
f1=open(r"C:\Users\ddadi\Documents\project2\check\log_file3.log","r") 
f1.seek(last_pos) 
for i in f1: 
    print i 
    last_position=f1.tell() 
    with open('sample_text.txt', 'a') as handle: 
     handle.write(str(last_position)) 

sample_text文件中包含的文件指针偏移量由f1.tell()

+1

你是怎么得到神奇的人物'419490'的? –

+0

请提供样本输入,当前输出和预期输出。否则,包括我在内的人会很难帮助你。 – jockster

+0

确定实际上我通过使用f.tell()方法得到了该值,并且我刚刚从该文本文件中存储了一个文本文件我正在读取该值@Nehal J Wani – surya

回答

1

如果它从行几乎可以肯定,因为你的偏移是错误的中间印刷返回。你没有解释你是如何通过用作seek的参数的幻数来得出的,没有这些信息就很难更准确地帮助你。

但是,有一件事很重要。在文本模式下打开的文件(默认为Python)上使用seek并不是一个好主意。尝试使用open(..., 'rb'),看看过程是否变得更容易预测。这听起来好像你可能通过在文本模式下阅读之后计算字符来获得偏移量,但好的旧Windows包含文本文件中的回车符,在程序看到文本之前,Python I/O例程会将其删除。

+0

非常感谢你回复@holdenweb。我会尝试这个 – surya

+0

它有帮助吗?一些反馈将受到欢迎! – holdenweb

+0

没有@holdenweb它实际上在Python 3.0 – surya

相关问题