0

pysftpを使用しているときにリモートフォルダのサイズを取得するには?

stat によって返されるオブジェクトが正しくないように見える、私のコード:

fdStat = sftpClient.stat(remotePath);
print(fdStat.st_size);

出力:

drwxr-xr-x   1 0        99           4096 21 Sep 11:13 ?
4096

=> フォルダremotePathが巨大で、サイズが 4096 をはるかに超えています。

4

2 に答える 2

1

このメソッドは、*nixコマンド.statと同じ情報を返します。lsここでのサイズはデータのサイズを表し、ディレクトリ自体 (= 含まれるファイルに関するメタデータ) がディスク上で占有します。含まれているファイルのサイズではありません。

一般に、pysftp または SFTP プロトコルで単一の呼び出しを使用してディレクトリ内のファイルの合計サイズを取得する直接的な方法はありません。

ディレクトリをリストし(必要に応じて再帰的に)、個々のファイルのサイズを合計するだけです。

于 2015-09-21T07:48:57.260 に答える
0

私はexecute()を呼び出して回避し、Linuxサーバーの戻り値を処理します:

sftpClient.execute("du --apparent-size --block-size=1 " + remotePath)

于 2015-09-22T16:57:14.313 に答える