我知道这有点晚了,但我偶然发现了同样的问题并想出了一个不同的解决方案。也许看到这个的人会更喜欢这种方法。
由于我的 API 仅用于 linux 服务器,而且删除对我来说比较少见,所以我依靠 linux find 命令来帮助我。
# LINUX ONLY
cmd = "find {0} -iwholename '{1}'".format(basepath, caseInsensitivePath)
with os.popen(cmd) as f:
caseSensitivePath = f.read()[:-1] # -1 to remove the '\n'
# error if more than 1 line
if caseSensitivePath.find('\n') != -1:
print "Found multiple results including: \n", caseSensitivePath
msg = "[!]ERROR Could not delete {0}. Multiple case-sensitive results exist".format(caseInsensitivePath)
raise Exception(msg)
else:
return caseSensitivePath
basepath是查找的基本路径。我建议找到一种使用比根“/”更精确的方法。就我而言,我已经在同步文件夹中有一个路径列表,因此我可以进行如下比较:
caseInsensitivePath = caseInsensitivePath.lower()
# find basepath
basepath = assets_root
for folder in self.myDict.keys():
if caseInsensitivePath.lower().startswith(folder.lower()):
basepath = folder
caseInsensitivePath 是路径名。