我应该如何在 Python 字符串文字中写入 Windows 路径?
- 2024-11-18 08:41:00
- admin 原创
- 16
问题描述:
假设我需要引用路径C:meshesas
。如果我尝试直接写入,例如"C:meshesas"
,我会遇到问题 - 要么出现某些异常,要么路径根本不起作用。这是因为``充当了转义符吗?我应该如何写路径?
解决方案 1:
您可以始终使用:
'C:/mydir'
这在 Linux 和 Windows 中都有效。
另一种可能性是:
'C:\\mydir'
如果您对某些名称有疑问,您也可以尝试原始字符串文字:
r'C:mydir'
然而,最佳做法是使用始终与适合您操作系统的os.path
正确路径分隔符 ( ) 连接的模块函数:os.path.sep
os.path.join(mydir, myfile)
从 Python 3.4 开始,你也可以使用该pathlib
模块。这相当于上面的代码:
pathlib.Path(mydir, myfile)
或者:
pathlib.Path(mydir) / myfile
解决方案 2:
使用os.path
模块。
os.path.join( "C:", "meshes", "as" )
或者使用原始字符串
r"C:meshesas"
我还建议路径或文件名中不要有空格。你可以在字符串中使用双反斜杠。
"C:\\meshes\\as.jpg"
解决方案 3:
是的,`在 Python 中,字符串文字表示转义序列的开始。在您的路径中,您有一个有效的双字符转义序列
a`,它被折叠成一个ASCII Bell字符:
>>> 'a'
'x07'
>>> len('a')
1
>>> 'C:meshesas'
'C:\\meshesx07s'
>>> print('C:meshesas')
C:meshess
其他常见的转义序列包括
(tab)、`(换行)、
`(回车):
>>> list('C: est')
['C', ':', ' ', 'e', 's', 't']
>>> list('C:
est')
['C', ':', '
', 'e', 's', 't']
>>> list('C:
est')
['C', ':', '
', 'e', 's', 't']
如您所见,在所有这些示例中,反斜杠和文字中的下一个字符被组合在一起,在最终字符串中形成单个字符。Python 转义序列的完整列表在此处。
有多种方法可以解决这个问题:
Python 不会处理以
r
或R
为前缀的字符串文字中的转义序列:
>>> r'C:meshesas'
'C:\\meshes\\as'
>>> print(r'C:meshesas')
C:meshesas
Windows 上的 Python 也应该处理正斜杠。
您可以使用
os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... 或更新的
pathlib
模块
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
解决方案 4:
使用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())
Path
接受类似路径的字符串并根据当前操作系统(Windows 或 Linux)调整所有内容。例如,在 Linux 上,它会将所有反斜杠转换为正斜杠,而在 Windows 上,它会执行相反的操作。
全文:Python 3 快速提示:在 Windows、Mac 和 Linux 上处理文件路径的简便方法
我的经验:
我花了 6 个月的时间使用
os.path.join(...)
,然后切换到normpath(...)
,最后切换到Path(...)
。使用过这三个工具后,我发现 Path 是所有工具中最好的。
Path的优势os.path.join(...)
:
清洁工。
减少打字。
更容易阅读路径(即更具可读性)。
可以使用
/
(参见上文) 连接两条不同的路径。更加现代。
Path的优势normpath(...)
:
可以使用 来连接路径,
/
而不必回退到os.path.join(...)
,并使用嵌套的 normpath 调用来解决问题。清洁工。
减少打字。
更容易阅读路径(即更具可读性)。
在 Linux 和 Windows 之间移植时出现错误的可能性更小。
更加现代。
解决方案 5:
Python 原始字符串是通过在字符串文字前添加“r”或“R”来创建的。Python 原始字符串将反斜杠 () 视为文字字符。当我们想要一个包含反斜杠的字符串并且不希望它被视为转义字符时,这很有用。
手动操作如:
WindowsPath("C:meshesas")
或者使用 r 或 R:
WindowsPath(r'C:/meshes/as')
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件