Python 是否需要os.path.join?

Python 是否需要os.path.join?,python,filepath,Python,Filepath,目前我几乎总是在django项目中使用os.path.join来支持跨操作系统;我目前唯一不使用它的地方是模板名和URL。因此,在需要路径'/path/to/some/file.ext'的情况下,我使用os.path.join('path','to','some','file.ext') 然而,我只是在windows上测试了我的项目,看看这是否很好/是必要的,而且windows似乎很乐意接受'/'或'\\'(或'\'\'在python之外工作时),因为所有UNIX系统都使用'/',似乎没有任何理

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

然而,我只是在windows上测试了我的项目,看看这是否很好/是必要的,而且windows似乎很乐意接受
'/'
'\\'
(或
'\'\'
在python之外工作时),因为所有UNIX系统都使用
'/'
,似乎没有任何理由使用
'\\\'
,在这种情况下,需要在任何地方使用
os.path.join

是否存在添加
'/'
或使用
posixpath
会导致某些操作系统出现问题的情况(不包括XP或更低版本,因为它们不再受到官方支持)?如果没有,我想我只会使用
posixpath
或添加一个
'/'
来将变量与其他变量或变量与字符串连接起来,而不会分离出字符串路径(因此将其保留为
'/path/to/some/file.ext'
),除非我有其他理由不这样做,而不是破坏东西


为了避免这一点可能因为主要基于观点而被关闭,我想澄清我的具体问题是,不使用
os.path.join
是否会导致python程序在受支持的操作系统上无法正常工作。

如果您出于任何原因向用户提供文件名,如果该文件名遵循通常的操作系统惯例就更好了


只要存在路径,Windows就可以将路径分隔符使用
/
,这是DOS的一项功能。

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

另一种情况在
Lib/macpath.py
中介绍:其中
sep
设置为
(冒号),以适应较旧的Macintosh系统。我相信这是Python运行过的唯一一个不接受
/
作为分隔符的系统


编辑:用于Windows命名规则的详细说明。别怪我;-)

在这种情况下,它是在一个网站上,所以唯一的时间路径将显示的URL路径将始终使用a/所以我可以一直使用/?感谢您提供关于/始终受支持的信息。在cmd.exe中,哪种命令不起作用?因为我刚刚测试了cd'./test/test'和'python.test/manage.py',它们都工作得很好。再努力一点-你会发现很多都不起作用;-)例如,
dir./misc
,如果您当前所在的目录中有
misc
子目录。您将得到错误
无效开关-“misc”。
。要准确说明所有情况,您必须询问Microsoft:-(好的,谢谢!我立即测试了'cd'和'python',因为这些是我主要使用的,并且假设/确实有效。对于非本机命令(如
python
),shell不在乎,因为shell不是解释命令,只是将字符串传递给正在运行的程序(命令行上命名的第一件事)。由shell实现的命令通常会出现问题,如
dir
cd
。但是,这是Windows,没有什么是一致的:-(请注意,如果您可能需要处理长路径(使用“\\?”格式),则必须使用反斜杠。尽管答案可能过于深奥,但使用硬编码路径分隔符将导致RISC OS…无法移植(以及无法移植到这类系统)RISC操作系统是否与django、nginx、supervisor和各种django库兼容?如果不兼容,我就不需要在这个项目中担心它,但如果是,它可能值得我考虑。