使用python中的sftp从远程计算机复制文件

时间:2012-06-22 14:06:01

标签: python sftp paramiko

我希望能够使用python中的scp,ssh或sftp从远程计算机复制文件。我发现的最好的方法是使用带有sftp的ssh。我一直试图用这个例子来完成我需要做的事情。

import paramiko
import os

paramiko.util.log_to_file('logfile.log')

host = "101.102.103.104"
port = 22
transport = paramiko.Transport((host, port))
password = "pass"
username = "user"

sftp = paramiko.SFTPClient.from_transport(transport)

filepath = '~/remote/file'
localpath = '~/local/file'
sftp.get(filepath, localpath)

sftp.close()
transport.close()

当我这样做时,我收到此错误:

Traceback (most recent call last):
  File "example.py", line 19, in <module>
    sftp.get(filepath, localpath)
AttributeError: 'NoneType' object has no attribute 'get'

我有什么遗漏或没有做错吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您的用户名和密码已初始化但从未使用过。您需要为传输对象

调用 connect
password = "pass"
username = "user"
transport.connect(username = username, password = password)

答案 1 :(得分:0)

API指定您必须向paramiko.Transport()提供“套接字对象”以提供元组。我猜这就是问题所在。

<强>更新 虽然在文档中另有说明,但元组是可以的。