Ошибка SFTP при записи файла Python / Paramiko - PullRequest
0 голосов
/ 20 декабря 2011

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

Я получаю ошибку:

File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 558, in put
file_size = os.stat(localpath).st_size
TypeError: coercing to Unicode: need string or buffer, file found

Оскорбительная строкакод просто

sftp.put(outputfile, sftpoutputfile)

Я попытался использовать копию выходного файла вместо того, который записывается в сценарии и который работал точно так, как и предполагалось.Я звоню file.close() после того, как файл записан (и до настройки sftp), поэтому кажется, что файл должен быть, хорошо, закрыт и пригоден для использования после этого.Может кто-нибудь сказать мне, что я делаю не так?Я могу опубликовать больше кода, если это будет полезно.Большое спасибо.

1 Ответ

1 голос
/ 20 декабря 2011

В сообщении об ошибке сообщается, что он (в данном случае os.stat) хочет иметь строковый объект, а вместо этого вы даете ему файл.мой экземпляр paramiko, мы видим

def put(self, localpath, remotepath, callback=None, confirm=True):
    [...]
    file_size = os.stat(localpath).st_size
    fl = file(localpath, 'rb')
    try:
        fr = self.file(remotepath, 'wb')
        fr.set_pipelined(True)

, поэтому я уверен, что ему нужно имя файла, а не сам файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...