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

创建.csv文件的远程python脚本(权限被拒绝),python,file,csv,ssh,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(s

我有一个远程执行的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(错误号13):权限被拒绝“results.csv”。这个错误将我的open标记为罪魁祸首

在执行python的目录上执行
ls-l
,我得到:

-rwxr-xr-x 1 jmschen operations 5003 <dateTimeStamp> pythonScript.py
很好用。这让我认为,我们远程执行python可能是问题所在

要求:

  • Unix上的Python 2.4.3(无法升级)
  • 没有外部模块/包(我认为我们不需要它们)
  • 无法更改
    ssh-c blowfish remoteAddr python-u pythonScript.py$1$2$3
    调用此要求已删除,因为ssh调用可能是罪魁祸首

    • 如果我正确理解了你的问题

      昨天我遇到了一个类似的情况,php要执行一个外部python脚本。我把我的用户权限误认为是php用户权限。我必须在php中使用chmod()

      通过研究你的问题,我发现了答案。试试这个:

      import os
      
      os.chmod(path, mode)
      csvFile = open('<fullpath>/results.csv','wt')
      csvFile.write(someResults)
      csvFile.close()
      
      导入操作系统
      os.chmod(路径、模式)
      csvFile=open('/results.csv',wt')
      csvFile.write(某些结果)
      csvFile.close()
      
      这与我在php示例中使用的过程大致相同。请注意,
      模式
      默认为八进制,因此如果给予完全权限,模式应为
      0777
      而不是终端的
      777

      我希望这有帮助


      *未测试

      您确定您有写入权限吗…?是的,我可以触摸文件、编辑文件,并且我创建了一个单独的python程序来测试文件I/O(使用open()读取/写入)。没什么问题,好主意。我尝试了它,收到了相同的错误csvFile=open(“results.csv”,“wt”)IOError:[Errno 13]权限被拒绝:“results.csv”Hmm…如果您还没有,请尝试传递包含results.csv文件名的完整路径。我不确定它将如何工作,因为您正在对尚未创建的文件授予权限,但值得一试。或者,尝试目录本身。如果这不起作用,我很抱歉,但我已经没有主意了。我不知道为什么完整路径与python脚本的相对路径相对重要。。。但是成功了!干得好!
      import os
      f = open("results.csv","w")
      f.write("Blah Blah Blah")
      f.close()
      
      import os
      
      os.chmod(path, mode)
      csvFile = open('<fullpath>/results.csv','wt')
      csvFile.write(someResults)
      csvFile.close()