如何在 Python 中通过 SFTP 检查 S_ISREG 的 Windows NTFS 文件?

How to check S_ISREG for a Windows NTFS file over SFTP in Python?

我正在连接到 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 的。我怀疑这一点是否正确?因为 Windows NTFS 文件没有 inode 值,所以我不能使用 S_ISREG 或任何与 inode 相关的东西?

我还能如何检查这些文件是否正常?

是的,可能是您的 Windows SFTP 服务器没有设置 S_IFREG 标志。

我会测试条目是否不是文件夹:

if not stat.S_ISDIR(file.st_mode):

(您可能还想测试 stat.S_ISLNK