2016-06-27 4 views
1

Я хочу запустить программу в cygwin через команду, используя скрипт python с уровня окна и параметры передачи для stdin. Я уже прочитал многие темы о stackoverflow, но решения, которые я нашел, не работают для меня. Вот код, основанный на темы стека:Как запустить программу в cygwin, используя скрипт python из окон?

from subprocess import Popen, PIPE 

cygwin = Popen(['CYGWINPATH\\bash.exe', '-'],stdin=PIPE,stdout=PIPE) 
cygwin.communicate(input="commandToRun") 

Это не найти соответствующую команду:

/usr/bin/bash: line 1: uname: command not found 
('', None) 

EDIT: Кредит на matzeri предложившего Баш вместо mintty. Пример: У меня есть скрипт python на рабочем столе Windows, и после doubleclick я хочу открыть программу внутри cygwin и передать параметры для stdin.

ответ

1

mintty не является командной оболочкой, вместо этого вы должны использовать bash.

$ cat prova.py 
#!/usr/bin/python 
from subprocess import Popen, PIPE 

cygwin = Popen(['bash'],stdin=PIPE,stdout=PIPE) 
result=cygwin.communicate(input="uname -a") 
print result 

так что вы можете иметь

$ ./prova.py 
    ('CYGWIN_NT-6.1 GE-MATZERI-EU 2.5.2(0.297/5/3) 2016-06-23 14:29 x86_64 Cygwin\n', None) 

Второй пример с самостоятельной программой

#!/usr/bin/python 
from subprocess import Popen, PIPE 

cygwin = Popen(['lftp'],stdin=PIPE,stdout=PIPE) 
result=cygwin.communicate(
input=" set dns:order inet inet6 \n\ 
open ftp.mirrorservice.org/sites/sourceware.org/pub/cygwin/x86/release\n\ 
find lftp\n\ 
quit ") 
print result[0] 

и выход

$ ./prova2.py 
lftp/ 
lftp/lftp-4.6.5-1-src.tar.xz 
lftp/lftp-4.6.5-1.tar.xz 
lftp/lftp-4.7.2-1-src.tar.xz 
lftp/lftp-4.7.2-1.tar.xz 
lftp/lftp-debuginfo/ 
lftp/lftp-debuginfo/lftp-debuginfo-4.6.5-1.tar.xz 
lftp/lftp-debuginfo/lftp-debuginfo-4.7.2-1.tar.xz 
lftp/lftp-debuginfo/md5.sum 
lftp/lftp-debuginfo/setup.hint 
lftp/lftp-debuginfo/sha512.sum 
lftp/md5.sum 
lftp/setup.hint 
lftp/sha512.sum 
+0

Это хороший ответ, если вы запустите питона скрипт с уровня cygwin, а не окна. Спасибо за публикацию :) ! – formateu

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