2009-12-18 3 views
1

J'essaye d'écrire ce script sur mon terminal Linux et je reçois le message d'erreur suivant: "OSError: [Errno 2] No such file or directory". Quelqu'un peut-il aider, MerciPython OSError: [Errno 2] Aucun fichier ou répertoire

#!/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

Et quelle ligne provoque cette erreur? –

+3

Veuillez fournir la trace d'erreur réelle avec le message d'erreur réel. –

+1

Qu'est-ce que ce programme "si"? Il semble suspect d'utiliser un nom de fichier Windows E: /project.pj dans un script Linux. Est-ce un script shell ou un programme exécutable? –

Répondre

5

Si l'erreur est dans votre script, peut-être vous avez une erreur sur cette ligne

errptr = file(errFile, "r") 

vous pouvez faire comme

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

Et aussi essayer avec chemin complet pour la commande "si" comme /usr/bin/si au lieu de juste si

+0

ne serait pas dans ce cas une erreur avant d'essayer d'ouvrir errFile pour l'écriture? – catchmeifyoutry

+0

"w" dans le fichier (errFile, "w") va créer un nouveau fichier ou remplacer le fichier existant, si le fichier n'est pas en mesure d'écrire, vous devriez obtenir une erreur d'écriture ou quelque chose comme ça. – YOU

+0

Exactement. Donc, si une telle erreur d'écriture n'est pas survenue, pourquoi ne pourrait-elle pas trouver le fichier comme vous l'avez suggéré? – catchmeifyoutry

0

try modif y comme ceci:

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

Je Guset subprocess.call penseront que le premier paramètre qui « » est une commande

Questions connexes