Latest posts on проблемы при работе с popen2; subprocess topichttps://python.su/forum/topic/1227/2007-09-11T11:13:44+03:00Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-11T11:13:44+03:00bialix7842<blockquote><em>$m1t</em><br/>File “C:\Program Files\Wing IDE 2.1\src\debug\server\_sandbox.py”, line 1, in ?<br/> # Used internally for debug sandbox under external interpreter<br/><br/>сообствено вопросов два: почему не выполнена команда dir и почему cmd закрылось?</blockquote>Ответ собственно один – при запуске из-под отладчика программы ведут себя немного по-другому.<br/><br/><blockquote><blockquote><em>bialix</em><br/>что значит: почему программа из внешнего файла обламывается читать?</blockquote>программа sc.exe при запуске читает подготовленную ей информацию из файла index.txt лежащего с ней в одном каталоге, однако этого не происходит.</blockquote>Ключевое слово – лежит в одном каталоге. Если программа sc.exe запускается не из своего каталога, то относительный путь к файлу index.txt будет не тот, что ожидаешь. Поэтому программе sc.exe нужно определять полный путь к своему exe и потом корректировать этот путь, чтобы прочитать index.txt<br/><br/>Самые известные “невидимые” грабли.
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T21:37:17+03:00$m1t7836самое печальное, что из .py файла <br/>import subprocess as sub<br/>p = sub.Popen('sr.exe', stdin=sub.PIPE)<br/>print p.communicate('?\n')<br/>работает, из консолей wingIDE, PyCrust - нет.<br/>p.s. вопрос, кажется, закрыт. bialix спасибо за моральну поддержку
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T21:00:26+03:00$m1t7835>p = Popen(“somefile.exe”, shell=True, stdin=PIPE, stdout=PIPE)<br/>тоже пробовал эффект тот же. <br/>заметил другое, что если запускаю из под PyCrust который использует pythonw.exe то ни чегео не работает. Если из под обычного python.exe то все работает, только несколько не так, как мне кажется это должно работать:<br/><div class="code"><pre>>>> from subprocess import *<br/>>>> p = Popen('c:\\windows\\system32\\cmd.exe',stdin=PIPE,stdout=PIPE,shell=True)<br/>>>> print p.communicate('dir')<br/>('Microsoft Windows XP [\x82\xa5\xe0\xe1\xa8\xef 5.1.2600]\r\n(\x91) \x8a\xae\xe0\xaf\xae\xe0\xa0\xe6\xa8\xef \x8c\xa0\xa9\xaa\xe0\xae\xe1\xae\xe4\xe2, 1985-2001.\r\n\r\nC:\\Documents and Settings\\Smit>\x8f\xe0\xae\xa4\xae\xab\xa6\xa8\xe2\xec? ', None)<br/>>>> print p.communicate('dir')<br/>Traceback (most recent call last):<br/> File "C:\Program Files\Wing IDE 2.1\src\debug\server\_sandbox.py", line 1, in ?<br/> # Used internally for debug sandbox under external interpreter<br/> File "C:\Python24\Lib\subprocess.py", line 783, in communicate<br/> self.stdin.write(input)<br/>ValueError: I/O operation on closed file<br/>>>></pre></div>сообствено вопросов два: почему не выполнена команда dir и почему cmd закрылось?<br/><br/><blockquote><em>bialix</em><br/>что значит: почему программа из внешнего файла обламывается читать?</blockquote>программа sc.exe при запуске читает подготовленную ей информацию из файла index.txt лежащего с ней в одном каталоге, однако этого не происходит.
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T20:12:50+03:00bialix7834так не пробовали?<br/><br/>p = Popen(“somefile.exe”, shell=True, stdin=PIPE, stdout=PIPE)<br/><br/>что значит:<br/><blockquote>почему программа из внешнего файла обламывается читать?</blockquote>
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T19:46:40+03:00$m1t7833читал, читаю, все равно не работает:<br/>p = Popen(, shell=True, stdin=PIPE, stdout=PIPE)<br/>Traceback (most recent call last):<br/>File “<input>”, line 1, in ?<br/>File “C:\Python24\lib\subprocess.py”, line 533, in __init__<br/>(p2cread, p2cwrite,<br/>File “C:\Python24\lib\subprocess.py”, line 623, in _get_handles<br/>errwrite = self._make_inheritable(errwrite)<br/>File “C:\Python24\lib\subprocess.py”, line 634, in _make_inheritable<br/>DUPLICATE_SAME_ACCESS)<br/>TypeError: an integer is required<br/><br/>пример взят из хелпа<br/><br/>и все еще не ясно, почему программа из внешнего файла обламывается читать?
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T17:54:09+03:00bialix7828почитайте про параметр stdin функции subprocess.Popen
Общий :: Python для экспертов :: проблемы при работе с popen2; subprocess
2007-09-10T17:18:25+03:00$m1t7825Есть .exe с которым нужно общаться из питоновского скрипта. .exe запускается в интерактивном и режиме ему нужно передать пару комманд что бы он кое что посчитал, а потом забрать результат. Этот exe перед запуском считывает данные из текстового файла. <br/>я коннекчусь через popen2:<br/><div class="code"><pre>t=popen2.popen2('c:\\lab\\manager\\sr.exe')</pre></div>программа выдает ошибку: она не может считать из текстового файла; при использовании subprocess та же ерунда. <br/>более того, когда я потом пытаюсь дать sr.exe другую команду используя <br/><div class="code"><pre>t[1].write('?')</pre></div>получаю:<br/>Traceback (most recent call last):<br/> File “<input>”, line 1, in ?<br/>IOError: Invalid argument<br/>в чем дело? <br/>работаю под win; хотя в дальнейшем этот скрипт надо будет запускать и под nix =(