Python中的Windows路径
表示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
“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转义序列的完整列表如下所示
有多种方法可以解决这一问题:
/
,就像在所有位置使用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')