我們有一個工作在這裏工作,輸入文件由SAS創建。該輸入文件然後由遺留應用程序讀取,並且遺留應用程序創建結果。 SAS然後讀取結果並對其進行總結。非程序員通常會逐一處理這些操作。所以這個人只是創建輸入文件。他們知道何時完成,然後他們運行遺留應用程序,並知道何時完成。然後他們運行彙總程序。如何檢查一個文件是否在python中的窗口上打開?
我有一種情況,我的老闆想跑100個左右的變化。我可以訪問共享網絡驅動器的3臺或4臺計算機。這是我的計劃:使用計算機A,我開始逐個創建100個輸入文件。使用計算機B,我在每個輸入文件上運行傳統程序。輸入準備就緒後,我想開始運行程序。因此,如果在計算機A上完成input1的創建,我想在計算機B上的input1上運行遺留應用程序,同時在計算機A上創建input2。我知道python最好,所以我可能會使用python將所有這些粘合在一起。
現在我知道我可以做很多事情,但我認爲這種方法已經足夠,並且可以讓我暫時完成工作。我沒有時間去設計和測試一個非常優雅的解決方案,它可以利用所有機器上的所有核心,或者使用數據庫來幫助我同步所有這些。我喜歡這樣的建議,,但我真的只想知道在python中是否有一種方法可以告訴網絡驅動器上的文件是否可以通過任何計算機上的任何應用程序進行寫入?如果沒有,我可能會想出一個愚蠢的方式來創建一個工作完成的指示器 - 就像創建一個文件「doneA」,如果它存在,則意味着「input1」文件已完成。例如。我會向創建輸入文件後創建指示器文件的sas程序添加一個步驟。
對不起,很長的解釋,但我只是不希望你浪費你的時間提供替代解決方案,我可能無法實現。
我已閱讀此question及其答覆。我不認爲我可以使用任何類似lsof b/c的文件,這些文件將在不同的計算機上打開。
我決定使用這種方法。到目前爲止我還沒有遇到任何問題。我的Python代碼基本上是循環直到文件存在,然後做一些東西。我可能會更喜歡並將每個組件的信號傳遞給對方,但我可能永遠不會重新使用此代碼。謝謝! – oob 2010-11-13 21:26:07