2009-12-18 2 views
1

Я пытаюсь записать этот скрипт в свой linux-терминал, и я получаю следующее сообщение об ошибке: «OSError: [Errno 2] Нет такого файла или каталога». Может кто-нибудь помочь, спасибо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

И какая строка вызывает эту ошибку? –

+3

Просьба представить фактический отчет об ошибках с фактическим сообщением об ошибке. –

+1

Что это за программа? Вызывает подозрение, что он использует имя файла Windows E: /project.pj внутри сценария Linux. Это сценарий оболочки или исполняемая программа? –

ответ

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)) 

А также попробовать с полный путь для команды «си», как /usr/bin/si, а не только si

+0

в этом случае не возникла бы ошибка при попытке открыть errFile для записи? – catchmeifyoutry

+0

«w» в файле (errFile, «w») создаст новый файл или перезапишет существующий файл, если файл не сможет писать, вы должны получить ошибку записи или что-то в этом роде. – YOU

+0

Точно. Итак, если такой ошибки записи не произошло, почему бы вам не найти файл, как вы предложили? – catchmeifyoutry

0

try modif у, как это:

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

Я guset subprocess.call будет думать, что первый параметр, который в «» является командой

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