2009-12-18 4 views
1

이 스크립트를 내 Linux 터미널에 쓰려고하는데 다음과 같은 오류 메시지가 나타납니다 : "OSError : [Errno 2] No such file or directory". 오류가 스크립트에있는 경우 누군가가, 감사합니다,Python OSError : [Errno 2] 해당 파일이나 디렉토리가 없습니다.

#!/home/build/test/Python-2.6.4 

import os, subprocess 

    # Create a long command line 
cmd =[\ 
"si createsandbox --yes --hostname=be", \ 
" --port=70", \ 
" --user=gh", \ 
" --password=34", \ 
" --populate --project=e:/project.pj", \ 
" --lineTerminator=lf new_sandbox"\ 
] 

outFile = os.path.join(os.curdir, "output.log") 
outptr = file(outFile, "w") 

errFile = os.path.join(os.curdir, "error.log") 
errptr = file(errFile, "w") 

retval = subprocess.call(cmd, 0, None, None, outptr, errptr) 

errptr.close() 
outptr.close() 

if not retval == 0: 
    errptr = file(errFile, "r") 
    errData = errptr.read() 
    errptr.close() 
    raise Exception("Error executing command: " + repr(errData)) 
+1

이라고 생각합니다 guset 그리고있는 줄은 해당 오류의 원인은? –

+3

실제 오류 추적을 실제 오류 메시지와 함께 제공하십시오. –

+1

"si"프로그램이란 무엇입니까? Linux 스크립트에서 Windows 파일 이름 인 E : /project.pj를 사용하고 있는지 의심 스럽습니다. 쉘 스크립트인가, 아니면 실행 가능한 프로그램인가? –

답변

5

을 도와 드릴까요 당신은

errptr = file(errFile, "r") 

당신이

if os.path.exists(errFile): 
    errptr = file(errFile, "r") 
    errData = errptr.read() 
    errptr.close() 
    raise Exception("Error executing command: " + repr(errData)) 

좋아해요 또한으로 시도 할 수 있습니다이 줄에 오류가 발생했습니다 수 있음 명령에 대한 풀 패스 "si"와 같이 si

+0

이 경우 errFile을 쓰기 위해 열려고 시도하기 전에 오류가 발생하지 않았습니까? – catchmeifyoutry

+0

"w"파일에서 (errFile, "w") 새 파일을 만들거나 기존 파일을 덮어 씁니다. 파일을 쓸 수 없으면 쓰기 오류가 발생합니다. – YOU

+0

정확합니다. 따라서 이러한 쓰기 오류가 발생하지 않은 경우 왜 제안한대로 파일을 찾을 수 없습니까? – catchmeifyoutry

0

try modif와 같은 /usr/bin/si과 같습니다. 이 같은 Y :

cmd =[\ 
    "si", \ 
    " createsandbox --yes --hostname=be", \ 
    " --port=70", \ 
    " --user=gh", \ 
    " --password=34", \ 
    " --populate --project=e:/project.pj", \ 
    " --lineTerminator=lf new_sandbox"\ 
] 

나는 subprocess.call는 첫 번째 매개 변수 것을 ""명령

관련 문제