Python + Popen + .bat файлы
От: Mamut Швеция http://dmitriid.com
Дата: 05.05.09 14:58
Оценка:
p = Popen("build-clean.bat", shell=True,stdout=PIPE,stderr=PIPE)


в build-clean идет процесс сборки какого-то там кода дло в том, что вместо того, чтобы его выполнить, такое ощущение, что питон просто проходит мимо, не дожидаясь выполнения бат-файла и идет дальше. а нужно, чтобы дождался выполнения

p = Popen("cmd", stdin = PIPE, stdout = PIPE)
output, err = p.communicate("""build-clean.bat""")


Вылетает с ошибкой I/O operation on closed file

Помогите запустить
avalon 1.0b rev 146


dmitriid.comGitHubLinkedIn
Re: Python + Popen + .bat файлы
От: Daevaorn Россия  
Дата: 05.05.09 15:04
Оценка: 36 (1)
Здравствуйте, Mamut, Вы писали:

M>
M>p = Popen("build-clean.bat", shell=True,stdout=PIPE,stderr=PIPE)
M>


M>в build-clean идет процесс сборки какого-то там кода дло в том, что вместо того, чтобы его выполнить, такое ощущение, что питон просто проходит мимо, не дожидаясь выполнения бат-файла и идет дальше. а нужно, чтобы дождался выполнения


M>
M>p = Popen("cmd", stdin = PIPE, stdout = PIPE)
M>output, err = p.communicate("""build-clean.bat""")
M>


M>Вылетает с ошибкой I/O operation on closed file


M>Помогите запустить


Могу предположить, что надо сделать:


p.wait()


чтобы дождаться окончания.

http://docs.python.org/library/subprocess.html#subprocess.Popen.wait
Re: Python + Popen + .bat файлы
От: ambel-vlad Беларусь  
Дата: 05.05.09 19:19
Оценка: 36 (1)
Здравствуйте, Mamut, Вы писали:

M>
M>p = Popen("build-clean.bat", shell=True,stdout=PIPE,stderr=PIPE)
M>


M>в build-clean идет процесс сборки какого-то там кода дло в том, что вместо того, чтобы его выполнить, такое ощущение, что питон просто проходит мимо, не дожидаясь выполнения бат-файла и идет дальше. а нужно, чтобы дождался выполнения


Попробуй вместо "build-clean.bat" запускать "cmd /c build-clean.bat"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Python + Popen + .bat файлы
От: Аноним  
Дата: 06.05.09 07:55
Оценка: 37 (2)
Здравствуйте, Mamut, Вы писали:

M>
M>p = Popen("build-clean.bat", shell=True,stdout=PIPE,stderr=PIPE)
M>


M>в build-clean идет процесс сборки какого-то там кода дло в том, что вместо того, чтобы его выполнить, такое ощущение, что питон просто проходит мимо, не дожидаясь выполнения бат-файла и идет дальше. а нужно, чтобы дождался выполнения


M>
M>p = Popen("cmd", stdin = PIPE, stdout = PIPE)
M>output, err = p.communicate("""build-clean.bat""")
M>


M>Вылетает с ошибкой I/O operation on closed file


M>Помогите запустить


модуль subprocess. Вот пример (использовался для unit тестирования приложения, которое должно было взаимодействовать с *.so, соответственно, в тесте использовался mock, а компилировался этот mock в setUp вот таким макаром):

 subprocess.check_call([
        'gcc', '-shared', '-o' + filename + shared_lib_ext,
        filename + '.c'
])
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.