首页 > 解决方案 > SSH2 Python如何识别文件何时是目录

问题描述

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

当我执行 readdir 时,我返回:

标签: pythonssh2

解决方案


我自己没有使用过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

推荐阅读