远程python脚本创建.csv文件(权限被拒绝)

时间:2012-10-24 15:22:56

标签: python file csv ssh

我有一个远程执行的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'。这个错误标志着我的开放是罪魁祸首。

在正在执行python的目录上执行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 个答案:

答案 0 :(得分:1)

如果我理解你的问题......

昨天我遇到了类似的情况,其中php意味着执行外部python脚本。我用php-user权限误认了我的用户权限。我不得不在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

我希望这有帮助!

*未测试