目前我几乎总是在我的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>
答案 0 :(得分:13)
Microsoft Windows API不关心您是使用/
还是\
,因此通常可以在Windows上用作分隔符。但是,命令行(“DOS框” - command.com
或cmd.exe
)命令通常在路径中需要\
(/
用于标记这些本机Windows shell中的命令选项) 。因此,例如,如果您在Python中构建命令行并触发shell来执行命令,则通常需要在Windows上使用\
分隔符。
Lib/macpath.py
涵盖了另一个案例:sep
设置为:
(冒号),迎合旧版Macintosh系统。我相信这是Python运行的唯一系统,它不接受/
作为分隔符。
编辑:see here用于Windows命名规则的长期帐户。不要怪我; - )
答案 1 :(得分:4)
如果您出于任何原因向用户提供文件名,则最好使该文件名遵循通常的操作系统约定。
只要有路径,Windows就可以使用/
路径分隔符 - 这是DOS功能。