Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Paramiko SFTP客户端在抛出IOError后创建零大小的文件_Python_Ssh_Sftp_Paramiko - Fatal编程技术网

Python Paramiko SFTP客户端在抛出IOError后创建零大小的文件

Python Paramiko SFTP客户端在抛出IOError后创建零大小的文件,python,ssh,sftp,paramiko,Python,Ssh,Sftp,Paramiko,您好,我正在尝试使用Paramiko的SFTP客户端将服务器中的远程文件复制到本地位置。下面是代码 try: self.SFTP.get(remotepath, localpath, callback=None) except IOError as e: print "File Not Found "+self.location 远程位置并不总是包含请求的文件,因此我想打印错误消息并结束进程 不幸的是,它会打印消息(IOError消息),但也会

您好,我正在尝试使用Paramiko的SFTP客户端将服务器中的远程文件复制到本地位置。下面是代码

    try:
        self.SFTP.get(remotepath, localpath, callback=None)
    except IOError as e:
        print "File Not Found  "+self.location
远程位置并不总是包含请求的文件,因此我想打印错误消息并结束进程

不幸的是,它会打印消息(IOError消息),但也会创建大小为零的本地文件

这是一个bug还是有其他方法可以避免它?

这是意料之中的

与其尝试获取一个您不知道是否存在的文件,我建议您:

  • 首先尝试使用Paramiko SFTP
    listdir
    命令查找它,或者
  • 尝试使用Paramiko SFTP
    file
    命令从中获取SFTPFile对象。
    • 如果失败,则文件不存在
    • 如果成功,只需关闭SFTPFile对象,并使用
      get
      命令下载文件
    • 我会使用:
      sftp.stat(远程路径)

      因此,在示例代码中:

      try:
          if self.SFTP.stat(remotepath):
              self.SFTP.get(remotepath, localpath, callback=None)
      except IOError as e:
          print "File Not Found  "+self.location
      

      当前,我正在做的是在抛出异常后使用os.remove(localpath)删除文件。我正在寻找一种通过SFTP客户端消除文件创建的方法。谢谢你的建议,不客气。(我可以建议你投票表决吗?)