2

リモートで実行されているPythonスクリプトがあります。このコードの最後のセグメントは、さらにレポートするために、スクリプトのディレクトリ(リモート)に出力ファイルを作成することになっています。

スクリプトはssh上で実行されています:

ssh -c blowfish remoteAddr python -u pythonScript.py $1 $2 $3

これにより、スクリプトに渡された引数(私はbashを使用しています)をPythonスクリプトへの入力にすることができます。

リモート側では、出力ファイル(.csv)を作成しようとしても役に立たないことがわかっています。

csvFile = open('results.csv','w')
csvFile.write(someResults)
csvFile.close()

IOError(Errno 13)を返します:アクセスが拒否されました'results.csv'。エラーは、私のオープンを原因としてマークしています。

ls -lPythonが実行されているディレクトリでを実行すると、次のようになります。

-rwxr-xr-x 1 jmschen operations 5003 <dateTimeStamp> pythonScript.py

アクセスに問題はないはずだと思います。また、私は以下を試しました:

os.chmod(<WherePythonScriptLives>,0777)
csvFile = open("results.csv","w")
csvFile.write(someResults)
csvFile.close()

これも同じエラーを生成します。

このコードをローカルで実行すると(ターミナルにsshした後)、同じIOErrorが発生します。ただし、ディレクトリ(test.py)に作成したPythonスクリプト

import os
f = open("results.csv","w")
f.write("Blah Blah Blah")
f.close()

うまく動作します。これは、Pythonをリモートで実行しているという事実が問題である可能性があると私に思わせますか?

要件:

  • Unix上のPython2.4.3(アップグレードできません)
  • 外部モジュール/パッケージはありません(これには必要だとは思いませんが)
  • ssh -c blowfish remoteAddr python -u pythonScript.py $1 $2 $3通話を変更できませんssh呼び出しが原因である可能性があるため、この要件は削除されています。
4

1 に答える 1

1

あなたの質問を正しく理解していれば...

昨日、phpが外部のpythonスクリプトを実行することを意図していた同様の状況に遭遇しました。ユーザー権限を php-user 権限と間違えていました。PHP で chmod() を使用する必要がありました。

あなたの質問を調査することで、Pythonの同等物を発見しました。これを試して:

import os

os.chmod(path, mode)
csvFile = open('<fullpath>/results.csv','wt')
csvFile.write(someResults)
csvFile.close()

これは、php の例で行ったプロセスとほぼ同じです。デフォルトは 8 進数なのでmode、完全な許可を与える場合、モードは0777vs 端末の777.

これが役立つことを願っています!

*未テスト

于 2012-10-24T15:57:44.543 に答える