我正在将我的 python 程序从 paramiko 转换为 ssh2。我已成功进行身份验证,并且可以获得目录列表。我卡住的地方是当我处理目录列表时,我如何识别“文件”是目录还是文件。我看到了属性,但我只能看到那些我想要使用的东西(知道文件的年龄)。一旦我完成了 opendir 和 readdir (以及文件列表),我如何识别每个是文件还是目录?
当我执行 readdir 时,我返回:
- 文件名长度
- 文件名
- 属性
- 一次
- 文件大小
- 旗帜
- 吉德
- 时间
- 权限
- uid
我自己没有使用过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