Python中的Windows路径

Python中的Windows路径,python,path,string-literals,Python,Path,String Literals,表示Windows目录的最佳方式是什么,例如“C:\mesh\as”?我一直试图修改一个脚本,但它始终无法工作,因为我似乎无法正确获取目录,我假设是因为'\'充当转义字符?使用os.path模块 os.path.join( "C:", "meshes", "as" ) 或者使用原始字符串 r"C:\meshes\as" 我还建议在路径或文件名中不要使用空格。你可以在字符串中使用双反斜杠 "C:\\meshes\\as.jpg" 您可以始终使用: 'C:/mydir' 这在linux和wi

表示Windows目录的最佳方式是什么,例如
“C:\mesh\as”
?我一直试图修改一个脚本,但它始终无法工作,因为我似乎无法正确获取目录,我假设是因为
'\'
充当转义字符?

使用
os.path
模块

os.path.join( "C:", "meshes", "as" )
或者使用原始字符串

r"C:\meshes\as"
我还建议在路径或文件名中不要使用空格。你可以在字符串中使用双反斜杠

"C:\\meshes\\as.jpg"
您可以始终使用:

'C:/mydir'
这在linux和windows中都适用。 其他可能性是

'C:\\mydir'
如果某些名称有问题,也可以尝试原始字符串文字:

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

os.path.join(mydir, myfile)
在Python3.4中,您还可以使用该模块。这相当于上述内容:

pathlib.Path(mydir, myfile)


是的,Python字符串中的
\
表示转义序列的开始。在您的路径中有一个有效的两字符转义序列
\a
,该序列折叠为一个字符,即:

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

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

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

  • :

  • Windows上的Python也应该处理正向斜杠

  • 你可以用

  • 。。。还是更新的

  • 使用PowerShell 在Windows中,您可以在路径中使用
    /
    ,就像在所有位置使用Linux或macOS一样,只要您使用PowerShell作为命令行界面即可。它在Windows上预装了并且支持许多Linux命令,比如
    ls
    命令


    如果使用Windows命令提示符(在Windows“开始”菜单中键入
    cmd
    时出现的提示符),则需要在其内部指定路径
    \
    。您可以在所有其他位置(代码编辑器、Python交互模式等)使用路径。

    @Gareth,我很懒,经常使用“/”。但是从长远来看,os.path的使用更加方便。它还允许您使用mydir和myfile作为变量,可以轻松修改。对原始字符串唯一要注意的是,它们不能以\结尾。您可以使用os.path.join()来消除以\结尾路径的需要。我喜欢r(原始字符串)语法。如果要复制一个长路径,通常需要将所有反斜杠替换为正斜杠,则此命令非常有用。原始字符串可以以\\结尾,这样我们可以将一个文件连接到路径:codecs.open(r“C:\maXbox\EKON24\tweet_data\\\\”+file,'r',encoding='utf-8')作为f:os.path。当组件是驱动器号时,join可能不会像您预期的那样工作,因为即使这样,也允许相对路径。(第一行的结果是Windows上的“C:meshes\\as”。@dash tom bang的评论非常重要。将
    “C:\”
    作为第一个条目是否正确?这是否会破坏使用
    join
    的清洁度?@JackO'Connor我就是这么做的。您当然不想在文件名中间放置<代码>“c:\”/>代码。此外,您可以在连接之前或之后使用
    os.path.normpath
    ,以确保路径打印得很好。但它也不起作用。起作用的是
    os.path.join(“C:\\,“mesh”,“as”)
    \\worksperfecty“C:\\mesh\\as.jpg”
    pathlib.Path(mydir) / myfile
    
    >>> '\a'
    '\x07'
    >>> len('\a')
    1
    >>> 'C:\meshes\as'
    'C:\\meshes\x07s'
    >>> print('C:\meshes\as')
    C:\meshess
    
    >>> list('C:\test')
    ['C', ':', '\t', 'e', 's', 't']
    >>> list('C:\nest')
    ['C', ':', '\n', 'e', 's', 't']
    >>> list('C:\rest')
    ['C', ':', '\r', 'e', 's', 't']
    
    >>> r'C:\meshes\as'
    'C:\\meshes\\as'
    >>> print(r'C:\meshes\as')
    C:\meshes\as
    
    >>> import os
    >>> os.path.join('C:', os.sep, 'meshes', 'as')
    'C:\\meshes\\as'
    
    >>> from pathlib import Path
    >>> Path('C:', '/', 'meshes', 'as')
    WindowsPath('C:/meshes/as')