Python如何从PySFTP连接打开DIN文件

时间:2018-07-30 20:36:44

标签: python pandas pysftp

我正在遍历.din文件列表。我正在尝试打开文件并循环浏览每一行,但似乎当我获取文件时,它们只是作为字符串而不是对象进入。

我希望能够打开我想要的文件,但是我使用pystfp的经验非常有限。任何帮助都会大有帮助。谢谢。

def find_ftp(username, password, cnopts, fileTitle, host):
    host = host
    with pysftp.Connection(host, username=username, password=password, 
                                                 cnopts=cnopts) as sftp:
        filelist = sftp.listdir('/output')
        for filename in filelist:
            print(filename)
            if filename == fileTitle:
                with open(filename) as f:
                    content = f.readlines()
                print("success")
            else:
                print("failure")

1 个答案:

答案 0 :(得分:0)

脚本中的错误是您正在使用内置函数'open()',这意味着您试图在本地而不是在主机上远程打开路径。而是使用pysftp.connection.open()在与之建立连接的远程主机上打开文件。

在您的代码中,您的“ pysftp.connection”对象称为“ sftp”。注意我如何用sftp.open()替换'open()'

def find_ftp(username, password, cnopts, fileTitle, host):
    host = host
    with pysftp.Connection(host, username=username, password=password, 
                                                 cnopts=cnopts) as sftp:
        filelist = sftp.listdir('/output')
        for filename in filelist:
            print(filename)
            if filename == fileTitle:
                with sftp.open(filename) as f:
                    # Data from SSH is binary, we need to decode to string
                    content = [line.decode("utf-8") for line in f.readlines()]
                print("success")
            else:
                print("failure")

有关SFTP.connection.open函数的一些信息: https://paramiko-docs.readthedocs.io/en/latest/api/sftp.html?highlight=open#paramiko.sftp_client.SFTPClient.open (链接自https://pysftp.readthedocs.io/en/release_0.2.8/pysftp.html