2009-07-16 2 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, ваше право было бы лучше для этого тестирования. Результаты те же, если я прокомментирую, что файл цикла записывает выходные данные ... Начало: Done !!!! С ними включает в себя выход ... Начало: – Ron

+0

Tx Ron для проверки разрешения - попросил меня провести тщательный анализ кода и определить вашу ошибку, см. Мой отредактированный ответ. –

+0

Спасибо --- Я слишком новичок в python, но я все время забываю, что вы не можете сделать это, как в Perl. Теперь, когда это будет решено, я смогу справиться с моими проблемами с реальным скриптом. (Думайте, что они связаны с окружающей средой.) Я собираюсь использовать этот, чтобы выплюнуть окружающую среду. – Ron

0

Какая ошибка вы получаете? Трудно видеть проблему без ошибки. В любом случае, файл открывается где-то в другом месте?

+0

Я не вижу ошибок. Сценарий выполняется на фоне сервиса. Файл не открывается ни с каким другим приложением. Я новичок в написании сервисов/mod_python/apache, если в некоторых случаях должны быть ошибки, где вы можете указать файлы журнала? Спасибо. – Ron

Смежные вопросы