質問
システムのフォルダー内でexeファイルを実行することになっているコードを少し処理していますが、次のエラーが表示されます...
WindowsError:[エラー3]指定されたパスが見つかりません。 コードの一部を次に示します。
exepath = os.path.join(EXE file localtion)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath, '-el', str(el), '-n', str(z)]
print 'The python program is running this command:'
print cmd
process = Popen(cmd, stderr=STDOUT, stdout=PIPE)
outputstring = process.communicate()[0]
サブプロセスをインポートし、サブプロセスのインポートからもインポートしました*
たとえば、これは、私が示すコードの最初の行で、exeファイルの場所がどのように見えるかです。
exepath= os.path.join('/Program Files','next folder','next folder','blah.exe')
何かが足りませんか?
解決
実行可能パスのスペースを適切にエスケープする必要があります
他のヒント
問題を引き起こす可能性のあるスペースやその他の文字(/など)を適切にエスケープすることに加えて、8文字の古いDOSパスも使用できます。
たとえば、プログラムファイルは次のようになります。
Progra〜1、最後の2文字に〜1を必ず追加してください。
EDIT:文字列の前にrを追加して、生のリテラルにすることができます。 Pythonは文字の文字列を読み取ります。このように:
r" \ Program files"
正しく覚えていれば、2行目のように実行可能ファイルのパスを引用する必要はありません。
編集:さて、近くのWindowsボックスをつかんでテストしました。 Popenは、パスが引用されているかどうかにかかわらず同じように機能します。したがって、これは問題ではありません。
わかりました。プログラムの実行に cmd.exe
が関与していない限り、パスを引用符で囲む必要はありません。
さらに、環境変数 ProgramFiles
を使用して、「Program Files」の実際の場所を見つけることもできます。これは、地域設定に依存し、TweakUIを使用して微調整することもできるためです。