看板 Python 關於我們 聯絡資訊
搞定了,http://msdn.microsoft.com/en-us/library/aa364218%28VS.85%29.aspx 測試 code # -*- coding:utf-8 -*- import win32file import win32con import win32security import datetime import time filename = 'filename' def read(): begin = datetime.datetime.today() file = open(filename, 'rb') file.read() file.close() print datetime.datetime.today() - begin time.sleep(5) def clear(): secur_attr = win32security.SECURITY_ATTRIBUTES() secur_attr.Initialize() hfile = win32file.CreateFile(filename, win32con.GENERIC_READ | win32con.GENERIC_WRITE, win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE, secur_attr, win32con.OPEN_ALWAYS, win32file.FILE_FLAG_NO_BUFFERING | win32file.FILE_FLAG_WRITE_THROUGH, 0) win32file.FlushFileBuffers(hfile) hfile.Close() print u'清空快取' clear() print u'第一次讀取資料,硬碟亮燈' read() print u'第二次讀取資料,硬碟不亮燈' read() print u'清空快取' clear() print u'第三次讀取資料,硬碟亮燈' read() print u'第四次讀取資料,硬碟不亮燈' read() print u'第五次讀取資料,硬碟不亮燈' read() -------------------------------------------------------------------------- 輸出結果 清空快取 第一次讀取資料,硬碟亮燈 0:00:18.751000 第二次讀取資料,硬碟不亮燈 0:00:00.343000 清空快取 第三次讀取資料,硬碟亮燈 0:00:18.766000 第四次讀取資料,硬碟不亮燈 0:00:00.328000 第五次讀取資料,硬碟不亮燈 0:00:00.344000 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.150.93
os653:忘了說,其實FlushFileBuffers那行執行的時候有出錯 01/10 00:59
os653:錯誤代碼1627 ERROR_FUNCTION_FAILED 01/10 00:59
os653:意思是 function failed during execution 01/10 01:00
os653:不知道到底是哪個參數設錯,不過加不加這個函式都能用 01/10 01:00
os653:就沒理它了,code忘了改掉 01/10 01:01
os653:可能要改用CreateFileW,不然在某些時候會出錯 01/22 17:10
os653:有可能是因為unicode path長度不到MAX_PATH 01/22 17:11
os653:但內部轉換時超過MAX_PATH導致CreateFile開檔時找不到路徑 01/22 17:12