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

标签 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): Permission denied '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()

这也会产生同样的错误。

在本地运行此代码(在 ssh 进入终端后)会产生相同的 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 调用可能是罪魁祸首。

最佳答案

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

昨天我遇到了类似的情况,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 默认为八进制,因此如果给予完全权限,mode 应为 0777 而终端的 777

希望对您有所帮助!

*未经测试

关于python - 创建 .csv 文件的远程 python 脚本(权限被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052323/

相关文章:

python - 如何切割和 reshape /融化表格或 CSV 文件

python - Pandas 在同一列上聚合多个摘要

python - 先前工作配置的 django-pyodbc-azure 回滚错误 - 第 389 行

java - 如何将字节数组转换为文件

python - 如何在 Python 中打开文件列表

java - 从文件中读取 Java null 对象

python - 如何使用分隔符将csv文件分割成多个文件? Python

python - 如何使用 csv dictreader、matplotlib 和 numpy 创建概率密度函数图?

python - 使用 Python 将数据转换为图像

sql - 使用 CSV 文件中的值更新 Oracle 表