2016-09-09 25 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

相關問題