2014-01-10 35 views
1

有沒有辦法檢查文件是否存在,避免任何潛在的競爭條件,而不是將文件讀入內存?Python:在不打開文件的情況下檢查文件的存在,同時避免競爭條件

我見過使用try/catch來避免競爭條件的例子,但他們都讀文件到內存中的東西,如:

with open filename as file 

我有一個大文件(大約100MB),我需要檢查是否存在,但出於安全考慮,希望避免在檢查時創建競爭條件。將整個文件讀入內存是不切實際的。我沒有想到什麼?

我是新來的,要溫柔。

+0

經典的os.path.exists?無論如何,嘗試/捕獲和打開不讀文件,只是給你一個句柄或FileNotFoundError – cox

+0

你能澄清你試圖避免什麼競爭條件?與你提到的成語讀取文件的主要原因,並避免之間os.path.exists()返回true和打開之間的競爭條件會失敗,因爲有人刪除文件 – Foon

+0

謝謝!我的印象是「開放式」將整個文件讀入內存之前,現在我意識到我錯了! – TheFunk

回答

1

整個目的競賽條件避免是嚴格,以便打開的文件是檢查的文件。試圖讓一個沒有另一個是不合適的。

此外,open()不會將該文件讀入內存,因此問題的一部分甚至沒有意義開始。

+0

我的印象是open()將文件全部讀入內存,這是我的問題。你說它不會,這意味着我可以使用我見過的try/catch方法,而不用擔心會有100MB的RAM被吃掉。無論如何,這就是我的意思。謝謝澄清! – TheFunk