首页 > 解决方案 > Paramiko SFTPAttributes 中的属性

问题描述

http://docs.paramiko.org/en/stable/api/sftp.html#paramiko.sftp_attr.SFTPAttributes现在显示 SFTP 属性的文档

我在终端中执行了以下代码

>>> import paramiko
>>> from stat import S_ISDIR
>>> 
>>> client = paramiko.SSHClient()
>>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> client.connect('ipaddress', username='xxx', password='xxx', banner_timeout=60)
>>> sftp = client.open_sftp()
>>> dl= '/home/generic/'
>>> a=sftp.listdir_attr(dl)
>>> print(a)

[<SFTPAttributes: [size=4096 uid=1000 gid=1000 mode=040775 atime=1624152009 mtime=1622179445]>, <SFTPAttributes: [size=4096 uid=1000 gid=1000 mode=040775 atime=1624172765 mtime=1623920]>7 , <SFTPAttributes: [size=1100 uid=1000 gid=1000 mode=0100600 atime=1624121097 mtime=1624121097]>]

我得到了文档中解释的 SFTP 属性。

但是,我怀疑当我检查上面返回的每件物品时,就像dir(a[0])它有以下物品一样:

>>> dir(a[0])
['FLAG_AMTIME', 'FLAG_EXTENDED', 'FLAG_PERMISSIONS', 'FLAG_SIZE', 'FLAG_UIDGID', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_debug_str', '_flags', '_from_msg', '_pack', '_rwx', '_unpack', 'asbytes', 'attr', 'filename', 'from_stat', 'longname', 'st_atime', 'st_gid', 'st_mode', 'st_mtime', 'st_size', 'st_uid']

>>> type(a[0])
<class 'paramiko.sftp_attr.SFTPAttributes'>
>>> 

上面传递的文档没有给出关于filename,longname等的提示asbytes。从哪里添加这个属性?我如何从文档本身理解它?

标签: pythonpython-3.xsftpparamiko

解决方案


你的问题有点含糊,所以我只能引用SFTPAttributes文档

以客户端或服务器模式表示 SFTP 的文件(或代理文件)的属性。它试图尽可能地镜像os.stat返回的对象,因此它可能具有以下字段,与os.stat对象返回的含义相同:

  • st_size
  • st_uid
  • st_gid
  • st_mode
  • st_atime
  • st_mtime

因为 SFTP 允许标志具有其他任意命名属性,所以这些属性存储在一个名为attr. 有时,文件名也存储在filename.

文档中没有提到的唯一属性是longname,通常包含一个类似于 *nixls命令输出的字符串。

其余的一些,比如asbytesand from_stat,是低级方法,而不是属性。除非您有特定需求,否则您可以忽略这些。


推荐阅读