Gar*_*eth 116 python path string-literals
例如,表示Windows目录的最佳方法是什么"C:\meshes\as"?我一直在尝试修改脚本,但它永远不会起作用,因为我似乎无法正确获取目录,我假设因为'\'扮演转义角色?
joa*_*uin 175
你可以随时使用:
'C:/mydir'
Run Code Online (Sandbox Code Playgroud)
这适用于Linux和Windows.其他可能性是
'C:\\mydir'
Run Code Online (Sandbox Code Playgroud)
如果你有一些名字的问题,你也可以尝试原始的字符串文字:
r'C:\mydir'
Run Code Online (Sandbox Code Playgroud)
但最佳做法是使用os.path始终为您的操作系统选择正确配置的模块功能:
os.path.join(mydir, myfile)
Run Code Online (Sandbox Code Playgroud)
从python 3.4你也可以使用pathlib模块.这与上述情况相同:
pathlib.Path(mydir, myfile)
Run Code Online (Sandbox Code Playgroud)
要么
pathlib.Path(mydir) / myfile
Run Code Online (Sandbox Code Playgroud)
Con*_*ngo 19
使用Path:
from pathlib import Path
data_folder = Path("source_data/text_files/")
file_to_open = data_folder / "raw_data.txt"
print(file_to_open.read_text())
Run Code Online (Sandbox Code Playgroud)
Path采用类似路径的字符串并调整当前操作系统(Windows 或 Linux)的所有内容。例如,在 Linux 上,它会将所有反斜杠转换为正斜杠,而在 Windows 上,它会执行相反的操作。
完整文章:Python 3 快速提示:在 Windows、Mac 和 Linux 上处理文件路径的简单方法
我的经验:
os.path.join(...),然后切换到normpath(...)最后切换到Path(...)。在使用了这三个之后,Path 是世界上最好的。Path的优点os.path.join(...):
/(见上文)连接两个不同的路径。Path的优点normpath(...):
/而不必退回到os.path.join(...)来修复问题。S.L*_*ott 15
使用该os.path模块.
os.path.join( "C:", "meshes", "as" )
Run Code Online (Sandbox Code Playgroud)
或者使用原始字符串
r"C:\meshes\as"
Run Code Online (Sandbox Code Playgroud)
vau*_*tah 15
是的,\在Python中,字符串文字表示转义序列的开始.在你的路径中,你有一个有效的双字符转义序列\a,它被折叠成一个ASCII Bell字符:
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Run Code Online (Sandbox Code Playgroud)
其他常见的转义序列包括\t(制表符),\n(换行),\r(回车):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Run Code Online (Sandbox Code Playgroud)
如您所见,在所有这些示例中,反斜杠和文字中的下一个字符组合在一起,以在最终字符串中形成单个字符.Python的转义序列的完整列表就在这里.
有多种方法可以解决这个问题:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Run Code Online (Sandbox Code Playgroud)Windows上的Python也应该处理正斜杠.
你可以用os.path.join......
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
Run Code Online (Sandbox Code Playgroud)......或更新的pathlib模块
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
Run Code Online (Sandbox Code Playgroud)小智 8
Python 原始字符串是通过在字符串文字前添加 \xe2\x80\x98r\xe2\x80\x99 或 \xe2\x80\x98R\xe2\x80\x99 前缀来创建的。Python 原始字符串将反斜杠 () 视为文字字符。当我们想要一个包含反斜杠的字符串并且不希望将其视为转义字符时,这非常有用。
\n手动执行例如:
\nWindowsPath("C:\\meshes\\as")\nRun Code Online (Sandbox Code Playgroud)\n或者使用 r 或 R:
\nWindowsPath(r'C:/meshes/as')\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
221299 次 |
| 最近记录: |