4

最近、新しいコンピューターに python をインストールしました。os.system()失敗する、または失敗する可能性がある理由がわかりません。os.popen()メイン スクリプトで and サブプロセスを試しましたが、問題は解決しません。

os.system()しかし、なぜこの単純なテストが最初から失敗するのかが最も心配です。

コマンドプロンプトで:

>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v. 1500 32 bit (Intel)] on win32
>>> import os
>>> os.system("dir")
-1
>>> os.system("cmd /c dir")
-1
>>> import subprocess
>>> subprocess.call("dir", shell=True)
Traceback ...
...
WindowsError: [Error 2] System could not locate file
>>> exit()
dir
(list of files)

例として dir を使用しましたが、システム パスに含まれる他のプログラムを呼び出しても同じことが起こります。cmd ラインから直接実行されますが、os.system または subprocess 経由では実行されません。

4

2 に答える 2

3

dir実行可能ファイルではなく、cmd.exeコマンドです。

試す:

os.system("cmd /c dir")

また

subprocess.call("dir", shell=True)
于 2012-06-14T13:08:05.040 に答える
1

私はそれを考え出した。私が疑ったように、それは環境変数に関係していました。

に必要なすべてのプログラムを追加しましたPathが、ComSpec 環境変数を確認したことはありません。

どうやら、私は追加しました

C:\Program Files (x86)\Java\jre7\bin

comspecデフォルトに加えて

%SystemRoot%\system32\cmd.exe

理由はまだわかりませんが、os.systemまたはsubprocessまたはを介し​​てファイルを呼び出したい場合、これにより問題が発生しますos.popen

解決策は、Path からのすべてのパスをComSpec同様に追加するか、単純に Java バイナリへのパスを削除することでした。

これが完了すると、すべてが正常に機能します (dir も含めて)。

于 2012-06-14T21:46:22.930 に答える