2009-11-23 3 views
0

파이핑의 모든 것과 파이썬에 대해 처음 알았는데 Cygwin의 표준 인 & stdout을 파이썬의 서브 프로세스 moudle을 사용하여 파이썬 프로그램에 파이핑하려고 할 때 문제가 발생했습니다. 예를 들어 내가 간단한 프로그램에 나섭니다 :Cygwin을 파이썬 프로그램으로 파이핑

cygwin.stdin.write('ssh') 
IOError: [Errno 22] Invalid argument 

내가 잘못 뭐하는 거지 : 그 후

cygwin = subprocess.Popen('PathToCygwin',shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE) 
cygwin.stdin.write('ssh') 

를 내가이 오류를 받고 있어요?

답변

2

글자 그대로의 코드는 작동하지 않습니다. 'PathToCygwin'값을 가진 문자열을 전달하고 있으며 아무 것도하지 않습니다. 나는 당신이 그보다 더 나은 문자열을 전달한다고 가정하지만, 당신은 우리에게 무엇을 보여주지 않았다.

PathToCygwin이 문제 일 것 같습니다. 경로를 올바르게 설정하지 않으면 작동하지 않습니다.

여기가 내 테스트 코드입니다. 파이썬의 Cygwin에서 버전에서이 작업을 실행, 그래서 Cygwin에서 스타일 경로를 사용 : 다시, 나는 파이썬의 Cygwin에서 컴파일 된 버전이 실행

>>> cpath = "/cygdrive/c/cygwin/bin/bash.exe" 
>>> cygwin = subprocess.Popen(cpath,shell=False,stdin=subprocess.PIPE,stdout=su 
bprocess.PIPE) 
>>> cygwin.stdin.write("ssh") 
>>> 

: 나는 /cygdrive/c 경로를 사용하는 대신 r"C:\cygwin\bin\bash.exe"의. Windows 기본 버전의 Python을 사용하는 경우 C: 경로를 사용해야 할 수도 있습니다.

여전히 문제가 발생하면 사용중인 파이썬 버전을 정확히 알려 주시고 사용중인 실제 경로 코드를 알려주십시오.

관련 문제