如何将双斜杠path转换为open()接受的path?

我有一个原始的string表示窗口上的path,如下所示: 'F:\\Music\\v flac\\1-06 No Quarter.flac\r'我应该怎么做,以便open()接受它? os.path.normpath()不工作。

 >>> path 'F:\\Music\\v flac\\1-06 No Quarter.flac\r' >>> fp=open(path,'rb') Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\\Music\\v flac\\1-06 No Quarter.flac\r' >>> fp=open(os.path.normpath(path),'rb') Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\\Music\\v flac\\1-06 No Quarter.flac\r' >>> 

双斜杠不是这里的问题。 这是\r回车字符在最后导致你的问题。

从路径中将其串起来:

 fp = open(path.strip(), 'rb') 

Python仅仅是显示你的path字符串的字符串文字表示,以便于调试。 任何具有特殊含义的字符,在可打印的ASCII范围之外,都会被转义,包括反斜杠。 价值本身没有加倍的反斜杠:

 >>> path = 'F:\\Music\\v flac\\1-06 No Quarter.flac\r' >>> path 'F:\\Music\\v flac\\1-06 No Quarter.flac\r' >>> print path F:\Music\v flac\1-06 No Quarter.flac >>> path[:3] 'F:\\' >>> len(path[:3]) 3 

请注意打印 path如何显示只有单个反斜杠的路径值以及路径的前三个字符如何为F:\ ,这是长度为3而不是4的字符串。在Python字符串中,反斜杠将表示转义序列,所以Python也逃脱那些。