如何解决如何在 Python 中通过 SFTP 检查 Windows NTFS 文件的 S_ISREG?
我正在连接到 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
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。