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 に答える