2

我能够成功地将 sftp 与 pysftp 连接起来,但是在下载文件时出现错误,因为FileNotFoundError: [Errno 2] No such file.我还观察到该文件只是在本地路径中添加“?” 连同扩展。以下是更多细节。

在 ftp 中以 Test_03132018080105.csv 的形式文件。在本地路径创建文件为 Test_03132018080105.csv?零字节

代码:

def get_move_on_ftp(ftpsource,localsource):
    if (os.stat(envvar.validfiles).st_size == 0) and (os.stat(envvar.invalidfiles).st_size == 0):
        print("There are no Source files on FTP.")
    else:
        srcinfo={'host':envvar.src_ftphost,'port':envvar.src_ftpport,'username':envvar.src_uname,'password':envvar.src_passwd}
        sftp = pysftp.Connection(**srcinfo)
        sftp.cwd(ftpsource)
        '''  Downloading Files   '''
        avail_files=open(envvar.validfiles,'r')
        for filename in avail_files:
            print(sftp.getcwd())
            #sftp.get(filename, preserve_mtime=True)
            print(filename) # for debug
            sftp.get(filename)
        sftp.close()

错误:

Traceback (most recent call last):
  File "my.py", line 96, in <module>
    main()
  File "my.py", line 92, in main
    config_file_read(config_file)
  File "my.py", line 85, in config_file_read
    get_move_on_ftp(ftpsource,localsource)
  File "my.py", line 61, in get_move_on_ftp
    sftp.get(filename)
  File "/home/username/miniconda3/lib/python3.6/site-packages/pysftp/__init__.py", line 249, in get
    self._sftp.get(remotepath, localpath, callback=callback)
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 770, in get
    size = self.getfo(remotepath, fl, callback)
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 746, in getfo
    file_size = self.stat(remotepath).st_size
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 460, in stat
    t, msg = self._request(CMD_STAT, path)
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 780, in _request
    return self._read_response(num)
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 832, in _read_response
    self._convert_status(msg)
  File "/home/username/miniconda3/lib/python3.6/site-packages/paramiko/sftp_client.py", line 861, in _convert_status
    raise IOError(errno.ENOENT, text)
FileNotFoundError: [Errno 2] No such file
4

1 回答 1

0

只需在 ftpsource 前面添加“/”即可。即“/2020/Jan/10/”。它应该工作

于 2020-12-03T11:51:10.600 回答