Python 3.10.6中os.path.exists()异常行为原因咨询
问题原因分析
先看你给出的代码:
#!/usr/bin/env python3 import os myFile = True if os.path.exists(myFile): print("True exists !!")
问题的核心原因如下:
- Python里的布尔值
True是整数类型的子类,它的实际数值为1 os.path.exists()函数在接收整数参数时,不会将其当作文件名解析,而是会把它当成文件描述符处理- 在类Unix系统(比如你使用的Linux Mint)中,文件描述符
1对应的是标准输出(stdout),这个描述符始终处于打开状态,因此os.path.exists(1)必然返回True,触发了打印语句
简单来说就是你把布尔值True传给了本该接收文件名的函数,它被识别成了标准输出的文件描述符,而这个描述符肯定存在,所以代码就输出了那句提示。
内容的提问来源于stack exchange,提问作者jackal
相关产品推荐
相关产品推荐

