尝试使用sftp.put(localpath,remotepath)时,Windows上的python paramiko sftp返回'FileNotFound [WinError2]'

时间:2014-06-03 19:26:39

标签: python sftp filenotfoundexception paramiko pysftp

我尝试使用Python 3.3将简单文件从本地主机(Windows)上传到远程计算机(UNIX)

以下是代码:

import os
import Crypto
import paramiko
import pysftp

localpath = "C:\\py.txt"
remotepath = "/tmp/py.txt"

s = pysftp.Connection(host='10.1.1.1', username='user', password='pass')

s.put(localpath, remotepath)

返回的错误是:

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    s.put(localpath, remotepath)
  File "C:\Python33\lib\site-packages\pysftp.py", line 349, in put
    confirm=confirm)
  File "C:\Python33\lib\site-packages\paramiko-1.14.0-       py3.3.egg\paramiko\sftp_client.py", line 585, in put
    file_size = os.stat(localpath).st_size
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C://py.txt'

我为localpath尝试了不同的前缀,例如&#39; C:\ py.txt&#39;但我得到了相同的结果。

提前致谢

2 个答案:

答案 0 :(得分:0)

Python使用反斜杠引用字符,例如\n =换行符和\t = tab;因此\\\\ =一个斜线。

使用r前缀创建原始字符串文字:

localpath = r"C:\\py.txt"

答案 1 :(得分:0)

我发现了问题。问题出在文件位置,因为它的名字是'py.txt',但我的窗口没有显示文件扩展名,所以实际的文件名是py.txt.txt