【问题标题】:Executing the psftp command using os.system使用 os.system 执行 psftp 命令
【发布时间】:2012-09-11 12:41:47
【问题描述】:

目前我正在研究 python,我需要使用psftp 命令从其他网络获取一些文件,如下所示:

import os
psftpCmd='psftp sftp.example.com -l user -pw pass'
os.system(psftpCmd)

但是当运行上面的代码时,我得到了以下错误:

sh: psftp: command not found

我可以知道该命令有什么问题以及如何执行如上所示的psftp 命令吗?

【问题讨论】:

  • 当您尝试从命令行执行psftp 时会发生什么?

标签: python sftp


【解决方案1】:

假设已安装 psftp 并且您可以访问 shell:

找到可执行文件的完整路径。从命令行运行which psftp 并替换字符串中的值。例如,如果which psftp 返回“/usr/local/bin/psftp”,那么试试:

import os
psftpCmd='/usr/local/bin/psftp sftp.example.com -l user -pw pass'
os.system(psftpCmd)

虽然您确实应该使用库而不是通过system() 调用来运行它。即使subprocess.popen 会更好。

【讨论】:

  • 感谢您的回答,实际上上面的代码已经在windows机器上成功运行了。但是现在我在fedora(linux机器)上实现了相同的功能,所以我不知道在命令之前使用“usr/local/bin”,我会尝试上面的方法并让你知道
  • @shivakrishna:你的 linux 机器不太可能有一个名为 psftp 的命令,因为这是 PuTTY 的一部分,并且在具有真正 ssh 和 sftp 客户端的机器上完全没有必要。
  • 其中:没有 psftp 在 (/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin )
  • 是的,正如 wooble 所说,这不太可能,但您没有指定命令应该是什么。你在这方面不走运。相反,如果您的目的是 FTP 一些文件,请使用专用于此的库。例如,将 ftplib 用于 ftp,或查看 *.com/questions/432385/… 以获得 SFTP 解决方案。
最近更新 更多