os.path在windows下大小写不敏感

这里记录一下与自己的第一想法不一样的代码表现,这种东西还是值得记录一下的,先直接看一下代码:
在桌面上有个命名为image的文件夹,里面有张图片

import os
# os:win10
# This is weird
path1 = 'C:\\Users\\Ezra\\Desktop\\image\\'
path2 = 'C:\\Users\\Ezra\\Desktop\\Image\\'
print('path1 == path2:', path1 == path2)

fileList1 = os.listdir(path1)
fileList2 = os.listdir(path2)

print('fileList1 == fileList2:', fileList1 == fileList2)

代码运行结果:

path1 == path2: False
fileList1 == fileList2: True

本来我以为访问文件嘛,他的目录需要写的很准确,比如这张图片的上级目录就是image,我一开始以为path2中写成Image是访问不到的,结果打脸,并且访问到的内容是一样的。

分析

  1. path1 == path2: False这个容易理解,字符串大小写肯定是不一样的。
  2. 关键是为什么fileList1 == fileList2: True?打印一下print(os.path.exists(path2)),结果也是True。难道os模块访问路径不区分大小写,那就再改一下试试:
path3 = 'c:\\users\\ezra\\desktop\\Image\\'
print("path3 is exist:", os.path.exists(path3))
# path3 is exist: True

写到这里突然意识到,以前在windows安装东西的时候命名D:d:是一样的,这时才回过神来,Windows文件(名/夹)大小写是不敏感的,而 os.path模块始终是适合Python运行的操作系统的路径模块,也就是适应不同操作系统的命名原则。

提醒

而linux系统下对文件命名是大小写敏感的,所以只需要在每个操作系统下写准确的路径就好,再者就是注意不同系统下项目的移植或者跨平台应用的运行需要注意这点!(写完感觉自己就是个憨憨)

猜你喜欢

转载自blog.csdn.net/laizi_laizi/article/details/105895196