python - 在python中跨平台清理表示为字符串的文件路径
问题描述
我在一个具有 .csv 输入表的模型上工作,我的一位同事(在 Windows 上)可能会在这个 .csv 输入表中保存一个路径,例如 .csv 输入表A_Inputs\inputs\sets\modeledyears_set.csv
。
另一位同事(在 Mac 上)可能会在 .csv 输入表中保存路径,例如A_Inputs/inputs/sets/other_modeledyears_set.csv
.
当我在我们的linux服务器上运行这个输入表时,windows输入的路径看起来像A_Inputs\\inputs\\sets\\modeledyears_set.csv
,而mac输入的路径看起来像A_Inputs/inputs/sets/other_modeledyears_set.csv
。
通常,我可以将任一路径拆分为其组件并使用 or 保存到一个普遍可访问的路径os.path.join(windows_path.split('\\'))
中os.path.join(unix_path.split('/'))
,
但是,我想知道是否有一种方法可以在os.path.join()
不执行这两个拆分的情况下获得结果。
是否有一些os
函数可以清理表示为字符串的路径,而不管斜杠面向的方向如何?我试图避免基于用户操作系统的 if/else 逻辑。
解决方案
您可以使用以下方法来同时支持Unix
和Windows
import os
os.path.join(path.split(os.pathsep))
推荐阅读
- redbird - redbird - 如何添加自定义标题
- upgrade - 是否可以将 Odoo 9 EE 迁移到 Odoo 10 CE?
- php - 授权标头未传入 php curl 使用 CURLOPT_HTTPHEADER
- mysql - 带有内部连接的子查询
- spring-boot - Kotlin 1.3 + Spring Boot:已经有 '...' bean 方法
- ios - ARSCN查看方向问题
- javascript - Start animation in viewport
- python - 读/写包含任意长度列表的 CSV 字典数组
- javascript - Visual Studio 中表达式周围的无偿括号
- specflow - 有没有办法在 SpecFlow 中找到所有未绑定的步骤?