1

我想用 Python 从 SFTP 站点下载文件,但我想先对文件应用过滤器,例如。只下载符合特定模式的文件。我只想将过滤器应用于文件名,而不是完整路径。但是当我想下载文件时,我需要完整路径。是否有捷径可寻?

4

1 回答 1

1

我想我明白你在这里问什么。我附加了一个获取远程文件列表的代码块,然后是本地文件,然后我使用它来提供要传输的文件列表(这意味着文件在远程目录中而不是在本地目录中这与放置文件的功能相反)。然后它循环并仅传输满足文件过滤器的文件。

def getFiles ( remotePath, filterValue, hostname, user, pwd, pathShare, remove ):
    srv = sftpfunc (hostname,user,pwd)
    retFiles = []
    srv.chdir(remotePath)
    remoteFiles = srv.listdir()
    localFiles = os.listdir(pathShare)
    files = srv.listdir()
    removeMe = ""
    if (len(remoteFiles) > 0):
            tranFiles = list(set(remoteFiles) - set(localFiles))
            print ('File Transfer List: ')
            for fileName in tranFiles:
                    if not filterValue in fileName: continue
                    print ('Transfering:  ',fileName)
                    srv.get(fileName, pathShare+fileName)
                    if (remove):
                            try:
                                    srv.rmfiles(fileName)
                            finally:
                                    print('Could not remove files')

                    retFiles.append(fileName)
    srv.close()
    return retFiles
于 2012-06-20T19:11:19.383 回答