【问题标题】:How do I convert a double slashed path to a path that open() accepts?如何将双斜线路径转换为 ​​open() 接受的路径?
【发布时间】:2013-08-01 00:08:07
【问题描述】:

我有一个原始字符串表示 Windows 上的路径,如下所示:'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'
>>>

【问题讨论】:

    标签: python windows python-2.7 path filepath


    【解决方案1】:

    双斜线不是这里的问题。导致您出现问题的是末尾的\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
    

    注意 printing path 如何显示只有单个反斜杠的路径值,以及路径的前 3 个字符如何为 F:\,长度为 3 而不是 4 的字符串。在 Python字符串文字,反斜杠将表示转义序列,因此 Python 也会转义这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2019-10-01
      • 2010-10-13
      • 2014-01-28
      • 1970-01-01
      • 2019-08-18
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多