python os.path.isfile()对于某些整数返回True
我肯定错过了一些显而易见的东西。当给定标量值时,python os.path.isfile()对于某些整数返回True,python,python-3.x,file,path,Python,Python 3.x,File,Path,我肯定错过了一些显而易见的东西。当给定标量值时,os.path.isfile()如何返回True >>> for i in range(0,20): print(os.path.isfile(i)) ... False False False False False False False False False False False False False True True True True True True True 我正在从一个空目录执行此操作。Pyth
os.path.isfile()
如何返回True
>>> for i in range(0,20): print(os.path.isfile(i))
...
False
False
False
False
False
False
False
False
False
False
False
False
False
True
True
True
True
True
True
True
我正在从一个空目录执行此操作。Python 3.6。我已经查看了关于os.path.isfile()
的其他问题,但没有找到答案。都在文档中:
- 如果路径是“现有”常规文件,则返回
True
- 如果返回
True
- 由于3.3版path可以是整数-如果它是一个打开的文件描述符
返回os.path.exists
True
- 是与当前进程打开的文件相对应的小整数。例如,标准输入通常为文件描述符0,标准输出为1,标准错误为2。由进程打开的其他文件将被分配3、4、5等。(名称“文件描述符”有点欺骗性;在Unix平台上,文件描述符也会引用套接字和管道。)
os.path.isfile(2)
->True
无论目录如何。@khelwood结果不同。不确定是否取决于工作目录或其他什么东西使用os.stat
?@khelwood它适用于i=0,1和2,输出:os.stat\u result(st_mode=8592,st_ino=3,st_dev=23,st_nlink=1,st_uid=1000,st_gid=5,st_size=0,st_atime=1595876800,st_mt=1595876800,st_ctime=1595513032)谢谢。恐怕我还是不明白我的价值观是从哪里来的。所以,你能用外行的话解释一下,为什么有13次错误,然后是7次错误?每次进程打开一个“文件”,它都会被分配一个整数“文件描述符”。如果该“文件”是常规文件,os.path.isfile
将在该整数上返回True
。谢谢!但按照我理解你的解释,它应该先分配较低的值。那么,为什么首先会有一堆错误的值呢?可能它在过去打开了其他文件,这些文件的描述符现在已关闭,但在后来的文件被打开时却没有。运行strace
或类似程序以查找,和/或查看这些打开的描述符指向何处;我猜是Python本身和您的脚本文件,以及Python使用的一些系统库。