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

标签 python sftp paramiko ntfs inode

我正在连接到 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/

相关文章:

python - 如何从 SQL 表中下载大数据并通过一次获取 1000 条左右的记录连续保存到 csv 中

python - 在记录输入的同时在 python 中制作计时器

python - pip list 和 sudo pip list 显示不同的包版本

jenkins - 如何使用 Jenkins 管道将文件从本地计算机复制到 SFTP 服务器?

amazon-web-services - 我应该将我的 Spring Boot REST API jar 文件放在我的 Ubuntu EC2 实例上的什么位置?

networking - SCP(安全复制协议(protocol))文件传输如何工作?

python - 如何使用 paramiko 通过键盘身份验证

python - python自动关闭SSH和Telnet吗

python - 分组后计算数据框中某些值的数量

python - 获取 "socket.error: [Errno 61] Connection refused"python paramiko