2009-07-16 143 views
1

我需要通過服務在後臺執行腳本。使用Popen執行腳本失敗

該服務使用Popen啓動腳本。

p = Popen('/path/to/script/script.py', shell=True) 

爲什麼當我在for循環中包含文件寫入時,以下腳本不起作用?

#!/usr/bin/python 

import os 
import time 

def run(): 
    fd = open('/home/dilleyjrr/testOutput.txt', 'w') 

    fd.write('Start:\n') 
    fd.flush() 

    for x in (1,2,3,4,5): 
     fd.write(x + '\n') 
     fd.flush() 
     time.sleep(1) 

    fd.write('Done!!!!\n') 
    fd.flush() 

    fd.close() 

if __name__ == '__main__': 
    run() 

回答

1

這是你的錯誤:

for x in (1,2,3,4,5): 
    fd.write(x + '\n') 

你不能總結一個int一個字符串。改爲使用(例如)

for x in (1,2,3,4,5): 
    fd.write('%s\n' % x) 
+0

我對該文件擁有777的權限。 我剛將它切換到/ tmp,您的權利對於此測試會更好。 結果是相同的,如果我註釋掉循環文件寫輸出是... 開始: 完成!!!! 與他們包括輸出是... 開始: – Ron 2009-07-16 15:08:37

0

你得到了什麼錯誤?沒有錯誤很難看到問題。無論如何,該文件是否在其他地方打開?

+0

我沒有看到任何錯誤。該腳本在服務的後臺執行。該文件未與任何其他應用程序打開。 我是新來寫服務/ mod_python/apache如果應該有錯誤的地方,你能指出日誌文件嗎? 謝謝。 – Ron 2009-07-16 14:52:00