Как скачать CSV-файл с pysftp на локальный компьютер? Не удается сохранить его по локальному пути или загрузить в df - PullRequest
0 голосов
/ 11 июля 2019

Попытка подключиться к sftp, скачать cvs, выполнить некоторые манипуляции с файлом и сохранить его как csv

Я знаю, что код верен вплоть до той части, где он перемещается в папку в sftp,и я думаю, что он загружает файл, потому что запуск кода занимает много времени, и файл, который его скачивает, большой.Но я не смог выполнить ни одной команды, которая печатала бы файл, чтобы убедиться, что он действительно был загружен.Не уверен, что второй аргумент в функции get должен быть целью сохранения файла на локальном компьютере.

import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None   

myHostname = 'host.com'
myUsername = 'username'
myPassword = 'pass'

server = pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts)
server.cwd('/targetFolder/')
server.get('/targetFolder/file.csv','C:\\')

Это ошибка, которую я получаю:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-74-0925a6d2adf3> in <module>
     10 server = pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts)
     11 server.cwd('/targetFolder/')
---> 12 server.get('/targetFolder/file.csv','C:\\')

C:\Users\rschuetz\Documents\Winpython\WPy64-3720\python-3.7.2.amd64\lib\site-packages\pysftp\__init__.py in get(self, remotepath, localpath, callback, preserve_mtime)
    247             sftpattrs = self._sftp.stat(remotepath)
    248 
--> 249         self._sftp.get(remotepath, localpath, callback=callback)
    250         if preserve_mtime:
    251             os.utime(localpath, (sftpattrs.st_atime, sftpattrs.st_mtime))

C:\Users\rschuetz\Documents\Winpython\WPy64-3720\python-3.7.2.amd64\lib\site-packages\paramiko\sftp_client.py in get(self, remotepath, localpath, callback)
    799             Added the ``callback`` param
    800         """
--> 801         with open(localpath, "wb") as fl:
    802             size = self.getfo(remotepath, fl, callback)
    803         s = os.stat(localpath)

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\'

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Кажется, код ожидает имя файла для локального пути, а не каталога, поэтому я думаю, что это будет работать:

server.get('/targetFolder/file.csv','C:/file.csv')
0 голосов
/ 11 июля 2019

Я подозреваю, что проблема в строке ниже, и я исправил передачу второго аргумента в виде необработанной строки.

server.get('/targetFolder/file.csv',r'C:\\')
...