4

Pythonからparamikoを使用していくつかのファイルを取得するために、いくつかの詳細を使用してsftpに接続しました。コードは以下のとおりです

import paramiko
import os
import ftplib

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
ssh.connect('sftp.example.com', username='user', password='pass')
ftp = ssh.open_sftp()
files = ftp.listdir()
print files,"----< Total files"
print ftp.cwd(),"---< Current working diectory"

for feedFile in files:
    if feedFile == 'LifeBridge':
        ftp.chdir(feedFile)

結果

['Emerson', 'Lehighvalley', 'LifeBridge', 'stmaryct'] ----< Total files

File "test_sftp.py", line 11, in <module>
    print ftp.cwd()   ---< Current working diectory
AttributeError: 'SFTPClient' object has no attribute 'cwd'

ここで私がしていることは

  1. sftp の現在の作業ディレクトリを見つけようとしています

  2. ファイルの印刷の結果として取得したファイルのリストがあります。それらがフォルダーまたはファイルであるかどうかを確認しようとしています。それらがフォルダーに入力したいフォルダーである LifeBridge場合

最後に、誰でも次のことを教えてもらえますか

  1. sftp の現在の作業ディレクトリを確認する方法
  2. 上記のリストの結果がファイルかフォルダーかを確認する方法
4

1 に答える 1

9

代わりに.getcwd()メソッドを探しています:

paramiko によってエミュレートされた、この SFTP セッションの「現在の作業ディレクトリ」を返します。でディレクトリが設定されていない場合chdir、このメソッドは を返しNoneます。

したがって、セッションの開始時に、現在の作業ディレクトリが必要な場合は、最初に (現在のディレクトリへの変更) を試してください.chdir('.')

この.listdir()メソッドは、ディレクトリ内のアイテムの名前のみを返します。これらのファイルに関する詳細情報が必要な場合は、代わりに.listdir_attr()メソッドを使用する必要があります。これはSFTPAttributesインスタンスのリストを返します。

SFTPAttributesインスタンスは、.st_mode属性を通じてファイルのモードを示します。stat.S_ISDIR(mode)関数を使用して、ファイルがディレクトリかどうかをテストします。

于 2012-09-13T10:30:05.347 に答える