Python os.path.join()和os.path.normpath()都在windows上添加了双反斜杠

Python os.path.join()和os.path.normpath()都在windows上添加了双反斜杠,python,Python,我想将正斜杠格式的unix文件路径转换为反斜杠格式的windows文件路径。我尝试了os.path.join()和os.path.normpath(),但它们似乎都在结果中添加了双反斜杠。例如,如果我使用os.path.normpath('static/css/reset.css'),结果是'static\\css\\reset.css'而不是static\css\reset.css。和'static/css/reset.css.replace('/','\\')给我的结果与os.path.no

我想将正斜杠格式的unix文件路径转换为反斜杠格式的windows文件路径。我尝试了os.path.join()和os.path.normpath(),但它们似乎都在结果中添加了双反斜杠。例如,如果我使用
os.path.normpath('static/css/reset.css')
,结果是
'static\\css\\reset.css'
而不是
static\css\reset.css
。和
'static/css/reset.css.replace('/','\\')
给我的结果与
os.path.normpath
相同。有没有办法只获取一个反斜杠分隔的字符串格式


顺便说一句,我在64位Windows 7上使用Python2.7。

'static\\css\\reset.css'
是字符串
r'static\css\reset.css'
的表示形式

双反斜杠表示反斜杠的转义——在字符串文字中,它的意思是“对下一个字符做一些特殊的事情”,这在这里是不需要的

>>> print('static\\css\\reset.css')
static\css\reset.css

正在显示
static\\css\\reset.css
,因为“\\”表示“\”。如果使用此文件路径,它将被解释为“static\css\reset.css”

作为交互式shell中的检查

>>> list('static\\css\\reset.css')
给出:

['s', 't', 'a', 't', 'i', 'c', '\\', 'c', 's', 's', '\\', 'r', 'e', 's', 'e', 't', '.', 'c', 's', 's']

“\\”将显示为单个字符。

我将详细介绍Elzar的正确答案和您的评论。在前面的回答中,可能会让您感到困惑并没有提到的是,在源代码中提供的Python字符串与Python控制台和IDE向您(开发人员)显示的Python字符串以及字符串的打印方式(即向用户显示)之间存在差异:

>s='c:\\directory\\file.txt'
>>>
'c:\\directory\\file.txt'>>print s

c:\directory\file.txt我肯定你想做的是
'static/css/reset.css'。替换('/','\')
,但我认为这不是理想的解决方案;您应该选择
os.path
路径。我不知道答案,我相信其他人会的。既然前斜杠在windows上可以正常工作,为什么你就不能不使用前斜杠呢?+1——正是出于这个原因,后斜杠是一种巨大的痛苦,而前斜杠在windows上也可以正常工作。一个可能有助于消除困惑的有趣故事:问题是,如果我使用
'static\\css\\reset.css'
在我的计算机上搜索文件,它总是显示
系统找不到指定的路径。
非常沮丧:(@chaonextdoor:带正斜杠的版本有效吗?如果查找失败,问题可能出在其他地方。请使用normpath使用系统分隔符:基于Unix的将用“/”替换th path,用“\”替换windows
>>> s = 'c:\\directory\\file.txt'
>>> s
'c:\\directory\\file.txt'  <-- if you ask for the value, you will see double slashes
>>> print s
c:\directory\file.txt      <-- if you print the string, the user will see single slashes