python - 如何在 Python 中通过 SFTP 检查 S_ISREG 以获取 Windows NTFS 文件?
问题描述
我正在连接到 SFTP 服务器 (NTFS) 并尝试获取所有常规文件的文件(在我的情况下,它们现在是 json 文件,但它们可能是其他任何文件)。这是相关的代码片段:
import stat
import paramiko
# more code here
for file in sftp_client.listdir_attr(curr_path):
if stat.S_ISREG(file.st_mode):
# do something
我的问题是,当我检查 S_ISREG 时,每个文件都返回为 False。该文件只是一个普通的 json,因此应将其标记为常规文件。
我怀疑问题是检查文件的 inode 的 S_ISREG 是一个非常 Unix 的概念,而服务器是基于 Windows 的。我怀疑这一点是对的吗?我不能使用 S_ISREG 或任何与 inode 相关的东西,因为 Windows NTFS 文件没有 inode 值?
我还能如何检查这些文件是否正常?
解决方案
是的,您的 Windows SFTP 服务器可能没有设置该S_IFREG
标志。
我会测试该条目是否不是文件夹:
if not stat.S_ISDIR(file.st_mode):
(您可能还想测试stat.S_ISLNK
)
推荐阅读
- javascript - 跳过空对象或空对象以分配给猫鼬中的数组
- ios - 快速分页的 PromiseKit
- javascript - 为什么以前的背景颜色记录在变量 C 中?
- javascript - 令人困惑的 JavaScript 赋值语法错误
- java - 简单日期格式错误解析日期
- django - 哨兵日志跟踪器不能实时工作
- php - FPDF 图像功能从不同的扩展名给出错误
- netbeans - 如何更改 NetBeans 分析器使用的 Web 服务器?
- ios - 传递数据并显示该模型
- apache-kafka - KSQL AVRO FORMAT ISSUE for Kafka Connect Elastic Search:org.apache.kafka.connect.errors.DataException:de******ense