python - SSH2 Python如何识别文件何时是目录
问题描述
我正在将我的 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
推荐阅读
- state - Service Fabric Actor State:在持久模式下从哪里读取状态?
- python - OpenCV:如何读取自动检测的 api 和 Videocapture 格式
- javascript - 通过 Blazor JSInterop 调用 IIFE 中定义的函数
- javascript - 在Vue中加载页面时从列表中调用json
- python - 如何在python中制作矩阵矩阵?(值错误)
- r - rowwise() 使用 mean() 和 sum() 产生错误
- laravel - Using Spatie's Laravel Permission Package, how can I assign multiple roles to a user?
- java - “错误:无法找到或加载主类”,在 MacOS Catalina 上运行
- html - 在已溢出的父列表前面显示子列表:隐藏的 DIV
- xcode - 无法在 Mojave 上安装 XCode