我正在连接到 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
)
关于python - 如何在Python中通过SFTP检查Windows NTFS文件的S_ISREG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68524044/