Python で SFTP サイトからファイルをダウンロードしたいが、最初にファイルにフィルターを適用したい。特定のパターンに適合するファイルのみをダウンロードします。フルパスではなく、ファイル名にのみフィルターを適用したい。しかし、ファイルをダウンロードしたいときは、フルパスが必要です。これを行う簡単な方法はありますか?
質問する
1062 次
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 に答える