2012-02-29 105 views
0

我是比較新的蟒蛇,我已經寫了一個Python腳本,執行以下操作:如何讓python腳本等待一段時間?

  1. 它做一些操作和寫操作的細節到一個文本文件(比如A.TXT)
  2. 一旦寫入txt文件(a.file),就會讀取相同的文件以執行一些操作。

我面臨的問題是一旦寫入文件(a.txt)並讀取相同內容,則不會讀取內容。

我使用time.sleep()在txt文件(a.txt)被寫入後,然後繼續讀取它。

但最新情況是腳本正在停止它在sleep方法中提到的時間段內執行,並且txt文件未被讀取。

我需要一個場景,其中相同的腳本必須寫入文本文件並立即閱讀。

有人可以幫我嗎?提前致謝。

+7

請增加你的代碼 – 2012-02-29 17:42:47

+0

你關閉了文件嗎? – jterrace 2012-02-29 17:43:17

+0

另外,寫完之後你是否沖洗緩衝區? – 2012-02-29 17:43:30

回答

0

爲了看你剛纔寫它應該只需要關閉該文件(從而刷新緩衝區),你不應該需要睡眠的方法來阻止,例如

filepath="myfilepath" 
with open(filepath,'w') as f: 
    f.write("hello") 

with open(filepath,'r') as f: 
    print(f.read()) 

文件在這種情況下,當關閉塊時,「with」關鍵字會自動調用文件f.close()。 「with」關鍵字在python的早期版本中不起作用。以上相當於明確地這樣做:

filepath="myfilepath" 
f = open(filepath,'w') 
f.write("hello") 
f.close() 
f = open(filepath,'r') 
print(f.read()) 
f.close() 

關閉函數刷新緩衝區。

根據您的使用情況,最好使用其他類型的數據結構來存儲您的臨時值,如簡單變量。玩得開心學習python。

編輯:「同向」聲明是在Python 2.5

3

介紹如果你寫一個文件,「當前位置」是在寫後的文件的末尾。要從同一個文件讀取,您必須使用seek方法轉到文件的開頭。

foo = open("bla.txt", "w+") 
foo.write("your text here") 
foo.seek(0) 
lines = foo.readlines() 
+0

確保你用'w +'(用於更新)打開文件,否則只是做'w'不會讓你從文件中讀取。 – jdi 2012-02-29 18:01:45

+0

修復,謝謝。 – 2012-02-29 18:09:07

+0

Upvoted因爲它迄今爲止唯一的答案,不打開文件兩次。 – jdi 2012-02-29 18:24:38

0

我懷疑這種方法不是最好的。

爲什麼你需要在完全相同的文件上順序寫入和讀取?

看起來你正在做的事情一樣

while True: 
    big_string = generate_big_string() 
    open(filename, 'w').write(big_string) 
    big_string = open(filename).read() 

,如果是這樣的話那麼就保存在內存中的串,有書面形式沒有點和閱讀所有的時間。 如果情況並非如此,那麼您應該發佈一些代碼以獲得更好的幫助。

相關問題