2012-08-27 26 views
0

我正在Windows下運行一些python腳本的shell測試腳本。 shell腳本正在測試各種模塊的功能。使用Python的bash腳本進行通信

我面臨的問題是某些腳本可能會掛起。爲此,我爲每個腳本添加了一個超時值。這個超時有一個默認值。但是這個超時值可以通過bash腳本來改變 - 從bash函數(SetMaxTime) - 我可以修改SetMaxTime。

當使用默認值時,我在python中等待那段時間,如果bash腳本沒有完成,我會認爲由於超時而失敗。

問題是當超時的默認值從bash更改時。有沒有辦法與python的bash腳本(使用mingw運行)進行通信?

注:腳本在Windows下運行。

+2

您的問題太泛泛,無法回答。向我們展示您的代碼,解釋您認爲可能有問題的地方,然後我們會回覆並解決問題。 – ghoti

+0

我已經給出了一個通用的答案。 –

回答

1

當然你可以在它們之間進行通信,只需從一個文件或一對文件(一個用於寫入Python,bash腳本讀取,另一個用於反之亦然)讀取/寫入文件。

+0

我認爲有更好的方法來做到這一點。但由於這不是時間關鍵任務,我可以使用文件。 – INS

+0

我同意,這是一個可怕的方式來做到這一點,但作爲一個快速和骯髒的解決方案,它將工作。 –

1

設置超時值時,腳本會在stdout上輸出信息。例如。當超時發生變化時,腳本可以輸出:

TIMEOUT_SECONDS=2 

在調用腳本,尋找這個標誌在被調用的腳本的輸出,並相應調整測試超時Python代碼。

對於這一點,你可能會想使用的subprocess.Popen方法,指定爲標準輸出的PIPE選項調用腳本。在測試運行時,您需要閱讀子進程stdout屬性,查找腳本的TIMEOUT_SECONDS=xxx輸出並調整超時時間。

相關問題