os.path.join是必要的吗?

时间:2014-06-06 01:16:54

标签: python filepath

目前我几乎总是在我的django项目中使用os.path.join来获得跨OS支持;我目前使用它的唯一地方是模板名称和URL。因此,在我需要路径'/path/to/some/file.ext'的情况下,我使用os.path.join('path', 'to', 'some', 'file.ext')

然而,我刚刚在Windows上测试了我的项目,看看它是否工作正常/是必要的,而且在python以外的地方工作时,Windows似乎会很乐意接受'/''\\'(或'\' ),并且由于所有UNIX系统都使用'/',似乎没有理由使用'\\',在这种情况下是否有必要在任何地方使用os.path.join

是否存在添加'/'或使用posixpath会导致某些操作系统出现问题的情况(不包括XP或更低版本,因为它们不再受到官方支持)?如果不是,我想我只会使用posixpath或添加'/'来将变量与其他变量或变量连接起来,而不是将字符串路径分开(所以请保留为'/path/to/some/file.ext')除非那里除了它破坏事物之外,我是另一个不做那件事的原因。

为了避免这种情况可能以主要意见为基础我想澄清我的具体问题是,使用os.path.join是否会导致python程序无法在支持的操作系统上按预期工作。< / p>

2 个答案:

答案 0 :(得分:13)

Microsoft Windows API不关心您是使用/还是\,因此通常可以在Windows上用作分隔符。但是,命令行(“DOS框” - command.comcmd.exe)命令通常在路径中需要\/用于标记这些本机Windows shell中的命令选项) 。因此,例如,如果您在Python中构建命令行并触发shell来执行命令,则通常需要在Windows上使用\分隔符。

Lib/macpath.py涵盖了另一个案例:sep设置为:(冒号),迎合旧版Macintosh系统。我相信这是Python运行的唯一系统,它不接受/作为分隔符。

编辑:see here用于Windows命名规则的长期帐户。不要怪我; - )

答案 1 :(得分:4)

如果您出于任何原因向用户提供文件名,则最好使该文件名遵循通常的操作系统约定。

只要有路径,Windows就可以使用/路径分隔符 - 这是DOS功能。