33

Pythonを使用していて、SFTPに接続しようとしていますが、そこからXMLファイルを取得したいので、ローカルシステムに配置する必要があります。以下はコードです:

import paramiko

sftpURL   =  'sftp.somewebsite.com'
sftpUser  =  'user_name'
sftpPass  =  'password'

ssh = paramiko.SSHClient()
# automatically add keys without requiring human intervention
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )

ssh.connect(sftpURL, username=sftpUser, password=sftpPass)

ftp = ssh.open_sftp()
files = ftp.listdir()
print files

ここで接続は完全に成功しています。そして今、私はすべてのフォルダーとすべてのファイルを見たいので、そこからXMLファイルを取得するために必要なフォルダーに入る必要があります。

最後に、SFTPサーバーに接続した後、すべてのフォルダーとファイルを表示することを目的としています。

上記のコードではftp.listdir()、以下のようなものとして出力を取得するために使用しました

['.bash_logout', '.bash_profile', '.bashrc', '.mozilla', 'testfile_248.xml']

これらが存在する唯一のファイルであるかどうか知りたいですか?

そして、私が上で使用したコマンドは、フォルダを表示するのにも正しいですか?

すべてのフォルダとファイルを表示するコマンドは何ですか?

4

3 に答える 3

13

lstat簡単な解決策の 1 つは、 の各オブジェクトの出力を調べることftp.listdir()です。

すべてのディレクトリを一覧表示する方法は次のとおりです。

>>> for i in ftp.listdir():
...     lstatout=str(ftp.lstat(i)).split()[0]
...     if 'd' in lstatout: print i, 'is a directory'
... 

ファイルは逆の検索です:

>>> for i in ftp.listdir():
...     lstatout=str(ftp.lstat(i)).split()[0]
...     if 'd' not in lstatout: print i, 'is a file'
... 
于 2012-09-06T08:22:12.117 に答える