1

我正在将我的 python 程序从 paramiko 转换为 ssh2。我已成功进行身份验证,并且可以获得目录列表。我卡住的地方是当我处理目录列表时,我如何识别“文件”是目录还是文件。我看到了属性,但我只能看到那些我想要使用的东西(知道文件的年龄)。一旦我完成了 opendir 和 readdir (以及文件列表),我如何识别每个是文件还是目录?

当我执行 readdir 时,我返回:

  • 文件名长度
  • 文件名
  • 属性
    • 一次
    • 文件大小
    • 旗帜
    • 吉德
    • 时间
    • 权限
    • uid
4

1 回答 1

1

我自己没有使用过ssh2-python,但我会说检查flags. 根据库的文档(如@NullPointerException 所建议),可能的值为:

LIBSSH2_SFTP_S_IFMT 文件掩码类型

LIBSSH2_SFTP_S_IFIFO 命名管道 (fifo)

LIBSSH2_SFTP_S_IFCHR 特殊字符(字符设备)

LIBSSH2_SFTP_S_IFDIR 目录

LIBSSH2_SFTP_S_IFBLK 块特殊(块设备)

LIBSSH2_SFTP_S_IFREG 常规文件

LIBSSH2_SFTP_S_IFLNK 符号链接

LIBSSH2_SFTP_S_IFSOCK 套接字

我想说flags的是一个位字段,您必须使用按位运算符检查某个标志是否“打开”,例如,检查它是一个目录:

flags & LIBSSH2_SFTP_S_IFDIR == LIBSSH2_SFTP_S_IFDIR
于 2019-09-30T19:19:01.327 回答