我如何转换一个像 r'C:\Users\usern\Documents\file.txt'
变成一个列表,如 ['C:', 'Users', 'usern', 'Documents', 'file.txt']
? 我希望它能跨平台工作,在Windows上,不管路径是用正斜线还是反斜线,或者两者混合,也不管输入字符串是否以斜线结尾(例如,对于像这样的输入,结尾处没有空字符串,如 'C:\\Users\\usern\\Documents\\'
).
据我所知,以下内容在Windows、Mac和Linux上都可以使用。
import sys
def path_to_list(s):
if sys.platform == 'win32':
return s.replace('\\', '/').rstrip('/').split('/')
else:
return s.rstrip('/').split('/')
但我不确定这是否能用在 其他 的平台,也如果这个解决方案对于这些常见的平台来说也不是很Pythonic。
至少在以下情况下会出现问题。
/
)作为文件-文件夹分隔符\
)或正向斜线(/
)作为文件-文件夹分隔符但我不确定是否存在这样的平台,如果存在,Python是否能在上面运行 (如果不存在,那么就不会引起问题)?
顺便说一下,你 不能 使用 if '\\' in __file__: ...
替换 if sys.platform == 'win32'
在代码块中)来检查是否允许反斜杠,因为,由于某些原因。__file__
返回带斜线的当前脚本的路径。即使在Windows上. 而且即使不是这样,可能也不是一个好办法。