2012-10-24 89 views
1

我有一個遠程執行的python腳本。該代碼的最後一段應該在腳本的目錄(遠程)中創建一個輸出文件以供進一步報告。創建.csv文件的遠程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() 

返回IO錯誤(錯誤13):權限被拒絕 'results.csv'。這個錯誤標誌着我的開放是罪魁禍首。

執行上正在執行蟒目錄的ls -l,我得到:

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

這讓我覺得,我應該有訪問沒有問題。另外,我曾嘗試以下:

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

這也產生了同樣的錯誤。

本地運行此代碼(在sshing到終端後)給出相同的IOError;然而,我在目錄(test.py)創建了一個python腳本

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

的作品就好了。這讓我認爲我們正在遠程執行python的事實可能是問題嗎?

要求:在Unix

  • 的Python 2.4.3(無法升級)
  • 沒有外部模塊/包(不,我認爲我們需要他們爲這個)
  • 燦不要更改ssh -c blowfish remoteAddr python -u pythonScript.py $1 $2 $3調用由於ssh調用可能是罪魁禍首,因此刪除了此要求。
+1

您確定您有寫入權限嗎? – mfrankli

+0

是的,我可以觸摸文件,編輯文件,並且我創建了一個單獨的python程序來測試文件I/O(使用open()讀/寫)。沒有任何問題。 – Jon

回答

1

如果我正確理解你的問題......

我遇到了類似的情況,其中昨日PHP是爲了執行一個外部python腳本。我誤以爲我的用戶權限與php用戶權限。我不得不在PHP中使用chmod()。

通過研究你的問題,我發現了Python equivalent。試試這個:

import os 

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

這是幾乎相同的過程中,我曾與我的PHP的例子。請注意,mode默認值爲八進制,因此如果授予完全權限,模式應爲0777,而終端的777應爲0777

我希望這有助於!

*未經測試

+0

一個好主意。我試過了,並收到相同的錯誤 csvFile = open(「results.csv」,「wt」) IOError:[Errno 13] Permission denied:'results.csv' – Jon

+0

嗯......如果你還沒有已經嘗試傳遞包含results.csv文件名的完整路徑。我不確定它是如何工作的,因爲您對尚未創建的文件授予權限,但其值得一試。或者,嘗試目錄本身。如果這不起作用,我很抱歉,但我沒有想法。 – That1Guy

+0

我不知道爲什麼完整路徑與python腳本的相對路徑相反......但它工作正常!做得好! – Jon