3

Linuxで正常に動作する単純なPythonスクリプトがあり、それをWindowsマシンに移動しました。実行しようとすると、次の例外メッセージが表示されます。

Traceback (most recent call last):
  File "C:\path\to\my\script.py", line 57, in <module>
    retcode = subprocess.call(command)
  File "C:\Python27\lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

例外をスローするコードのスニペットは次のとおりです。

print 'command is:',command
retcode = subprocess.call(command)

コンソール出力は次のとおりです。

コマンドは次のとおりです:['c:\ python27'、'C:\ path \ to \ script.py'、'--mode = 2'、'--check-temp = false'、'--all-seasons = true '、' --added = 1'、' --max-temp = 2000'、' --source = 2'、' --loc=XYZ']デバッグ中の未処理の例外...

誰もがこれを修正する方法を知っていますか?

WindowsXPProfessionalでpythonv2.7.3を実行しています

4

2 に答える 2

5

ドキュメントによると、引数シーケンスの最初の項目 (この場合、コマンドの最初の要素) は、実行するプログラムとして解釈されます。

コマンドの最初の要素を見ると、ディレクトリを実行しようとしているように見えます。ディレクトリからファイルであるかのように読み込もうとすると、Windows (やや非直感的) にアクセス拒否エラーが返され、実行しようとすると同じことが起こります。

c:\python27あなたがおそらく望むc:\python27\bin\python.exeか、または同様の何かの代わりに。とにかく、ディレクトリではなく、実行可能ファイルを指している必要があります。Linuxでこれが機能する理由がわかりません。

于 2012-08-06T21:38:27.090 に答える
1

あなたのプログラムはファイルへのアクセス権を持っていません...アクセスしようとしているファイルのパーミッションを確認してから、そこから進んでください...(つまり、Pythonインタープリターのパーミッションを上げるか、そのリソースに必要なアクセス権を減らします) - いずれにせよ - 慎重に踏みます。

于 2012-08-06T21:10:02.053 に答える