Python中的Windows路径

Windows path in Python

表示Windows目录的最佳方式是什么,例如"C:\meshes\as"? 我一直在尝试修改脚本,但它永远不会起作用,因为我似乎无法正确获取目录,我假设因为'\'充当转义字符?


你可以随时使用:

1
'C:/mydir'

这适用于Linux和Windows。
其他可能性是

1
'C:\\mydir'

如果你有一些名字的问题,你也可以尝试原始的字符串文字:

1
r'C:\mydir'

但最佳做法是使用始终为您的操作系统选择正确配置的os.path模块功能:

1
os.path.join(mydir, myfile)

从python 3.4你也可以使用pathlib模块。这与上述情况相同:

1
pathlib.Path(mydir, myfile)

要么

1
pathlib.Path(mydir) / myfile


使用os.path模块。

1
os.path.join("C:","meshes","as" )

或者使用原始字符串

1
r"C:\meshes\as"


是的,Python字符串文字中的\表示转义序列的开始。在你的路径中,你有一个有效的双字符转义序列\a,它被折叠成一个ASCII Bell字符:

1
2
3
4
5
6
7
8
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess

其他常见的转义序列包括\t(制表符),
(换行符),
(回车):

1
2
3
4
5
6
7
8
9
10
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:
est'
)
['C', ':', '
'
, 'e', 's', 't']
>>> list('C:
est'
)
['C', ':', '
'
, 'e', 's', 't']

如您所见,在所有这些示例中,反斜杠和文字中的下一个字符组合在一起,以在最终字符串中形成单个字符。 Python的转义序列的完整列表就在这里。

有多种方法可以解决这个问题:

  • Python不会处理前缀为rr的字符串文字中的转义序列:

    1
    2
    3
    4
    >>> r'C:\meshes\as'
    'C:\\meshes\\as'
    >>> print(r'C:\meshes\as')
    C:\meshes\as
  • Windows上的Python也应该处理正斜杠。

  • 你可以用os.path.join ......

    1
    2
    3
    >>> import os
    >>> os.path.join('C:', os.sep, 'meshes', 'as')
    'C:\\meshes\\as'
  • ...或较新的pathlib模块

    1
    2
    3
    >>> from pathlib import Path
    >>> Path('C:', '/', 'meshes', 'as')
    WindowsPath('C:/meshes/as')