如何将小写文件路径转换为实际路径
How to convert lower case file path to actual
变量file_path
只使用小写字母:
file_path = '/users/username/documents/my_doc.txt'
而实际文件路径包含:大写和小写字符:
/Users/UserName/Documents/My_Doc.txt
有趣的是,os.path.exists(file_path)
returns True
让我相信我可以忽略字母大小写,因为 Python 和 OS 这个过程是运行 on 不区分大小写。
但是如果文件路径以 /Volumes/
开头,字母大小写就变得非常重要(为什么会发生这种情况值得单独讨论)。
如何将所有小写的文件路径转换为正确显示大小写的实际文件路径?
您不需要,因为它不是确定性映射。相反,您在每个级别搜索其小写版本与您拥有的名称匹配的名称。
请注意,该过程可能不会产生唯一的答案。如果你同时拥有
/Users/UserName/Documents/My_Doc.txt
/Users/username/Documents/MY_DOC.txt
你分不清是哪一个。
另请注意,如果中间级别包含多个匹配项,您必须继续向下 每个 路径寻找完整匹配项。例如,如果您有顶级 users
、Users
和 USERS
,您将必须与所有三个一起工作以查看延续可能匹配的位置。
如果文件系统足够小,您可以简单地生成每个文件名并检查它们,那么这就是方法:简单、易于维护、易于遵循。
有点晚了,但可能仍然有用
import os
def _case(folder, findme):
items = os.listdir(folder)
for item in items:
if item.lower() == findme:
output = os.path.join(folder, item)
break
return item
def casify_fullpath(file_path):
output = r'C:\'
for part in file_path.split('\')[:-1]:
if not part: continue #skip blanks
output = os.path.join(output, _case(output, part))
return output
要运行这个,只需插入你的小写文件路径
file_path = r'C:\Users\whoami\Documents\mY_dOc'
file_path = file_path.lower()
print("input", file_path)
print("output", casify_fullpath(file_path))
变量file_path
只使用小写字母:
file_path = '/users/username/documents/my_doc.txt'
而实际文件路径包含:大写和小写字符:
/Users/UserName/Documents/My_Doc.txt
有趣的是,os.path.exists(file_path)
returns True
让我相信我可以忽略字母大小写,因为 Python 和 OS 这个过程是运行 on 不区分大小写。
但是如果文件路径以 /Volumes/
开头,字母大小写就变得非常重要(为什么会发生这种情况值得单独讨论)。
如何将所有小写的文件路径转换为正确显示大小写的实际文件路径?
您不需要,因为它不是确定性映射。相反,您在每个级别搜索其小写版本与您拥有的名称匹配的名称。
请注意,该过程可能不会产生唯一的答案。如果你同时拥有
/Users/UserName/Documents/My_Doc.txt
/Users/username/Documents/MY_DOC.txt
你分不清是哪一个。
另请注意,如果中间级别包含多个匹配项,您必须继续向下 每个 路径寻找完整匹配项。例如,如果您有顶级 users
、Users
和 USERS
,您将必须与所有三个一起工作以查看延续可能匹配的位置。
如果文件系统足够小,您可以简单地生成每个文件名并检查它们,那么这就是方法:简单、易于维护、易于遵循。
有点晚了,但可能仍然有用
import os
def _case(folder, findme):
items = os.listdir(folder)
for item in items:
if item.lower() == findme:
output = os.path.join(folder, item)
break
return item
def casify_fullpath(file_path):
output = r'C:\'
for part in file_path.split('\')[:-1]:
if not part: continue #skip blanks
output = os.path.join(output, _case(output, part))
return output
要运行这个,只需插入你的小写文件路径
file_path = r'C:\Users\whoami\Documents\mY_dOc'
file_path = file_path.lower()
print("input", file_path)
print("output", casify_fullpath(file_path))