2024-04-25 19:58:24 发布
网友
最近我在用Ubuntu编写代码和在Windows下运行时遇到了一些问题。你知道吗
两个平台上的代码:
输出Ubuntu(这就是我想要的):
输出窗口:
如您所见,windows上的split添加了'/',而不是按'/'拆分列表。list.split()不是跨平台的吗?你知道吗
'/'
list.split()
更“通用”的方法是使用os.path.split()。这将在最后一个分隔符处分割路径。必须迭代或递归地处理第一部分。你知道吗
os.path.split()
在Windows下,也可以考虑拆分驱动器号。你知道吗
像这样的
drv, path = os.path.splitdrive(fullpath) spl = [] while path: path, lastpart = os.path.split(path) spl.append(lastpart) spl.append(drv) # as needed spl.reverse()
应该这样做,但我手头没有窗户,无法测试它。你知道吗
使用os.sep
os.sep
例如:
import os importpath = __file__ print(importpath.split(os.sep))
如果你想超级安全,你应该反复使用os.path.split,或者同时测试os.sep和os.altsep作为分隔符。你知道吗
os.path.split
os.altsep
__file__将始终使用os.sep,但是当您从其他代码或用户直接输入获得路径时,很可能会使用os.altsep('/'在Windows上)。你知道吗
__file__
Windows上的示例:
>>> path = os.path.join('c:\\a', 'c/d') >>> print(path) 'c:\\a\\c/d' >>> pathsep = re.compile(r'\\|/') >>> pathsep.split(path) ['c:', 'a', 'b', 'c']
或者:
def safe_split(path): res = [] while True: path, tail = os.path.split(path) if len(tail) == 0: break res.append(tail) res.append(path) # do not forget the initial segment res.reverse() return res
以及
>>> safe_split('c:\\a\\c/d') ['c:\\', 'a', 'c', 'd']
更“通用”的方法是使用
os.path.split()
。这将在最后一个分隔符处分割路径。必须迭代或递归地处理第一部分。你知道吗在Windows下,也可以考虑拆分驱动器号。你知道吗
像这样的
应该这样做,但我手头没有窗户,无法测试它。你知道吗
使用
os.sep
例如:
如果你想超级安全,你应该反复使用
os.path.split
,或者同时测试os.sep
和os.altsep
作为分隔符。你知道吗__file__
将始终使用os.sep
,但是当您从其他代码或用户直接输入获得路径时,很可能会使用os.altsep
('/'
在Windows上)。你知道吗Windows上的示例:
或者:
以及
相关问题 更多 >
编程相关推荐