Python: 如何从 Path 对象中获取双反斜杠
Python: How to get double backslash from Path object
我正在使用 pathlib Path
模块来存储我的几个程序的路径。问题是,当我去使用这个变量时,我最终得到了一个错误,因为 \
变成了 \
,系统将其解释为一个特殊字符。我的理解是,根据 OS,Path
模块会相应地处理这个问题。 (我正在使用 Windows)
这是我的代码的重现:
from pathlib import Path
def get_dictionary():
path1 = Path("C:\Programs\program1")
path2 = Path("C:\Programs\program2")
path3 = Path("C:\Programs\program3")
path4 = Path("C:\Programs\program4")
info = {
"program1" : str(path1),
"program2" : str(path2),
"program3" : str(path3),
"program4" : str(path4)
}
return info
if __name__ == "__main__":
theInfo = get_dictionary()
print(theInfo['program1'])
print(theInfo['program2'])
print(theInfo['program3'])
print(theInfo['program4'])
print(theInfo)
控制台输出如下:
C:\Programs\program1
C:\Programs\program2
C:\Programs\program3
C:\Programs\program4
{'program1': 'C:\Programs\program1', 'program2': 'C:\Programs\program2', 'program3':
'C:\Programs\program3', 'program4': 'C:\Programs\program4'}
所以我的问题是:假设我想使用 theInfo['program1']
。我得到 C:\Programs\program1
但我需要得到 C:\Programs\program1
。我该怎么做呢?感谢您的帮助!
编辑:我从字典中得到的值被放置在一个字符串中,该字符串最终成为 Tcl 文件中的一行。例如我有一个函数,我写:
f"puts {theInfo['program1']}"
我期望的位置:
puts C:\Programs\program1
但我得到:
puts C:\Programs\program1
对于其他字符,这将解释为制表符、换行符等...
这个现象是由Escape character '\'
引起的,如果你真的希望转义数据是C:\Programs\program1
,你可以拆分路径然后加入\\
.
In [4]: data = 'C:\Programs\program1'
In [5]: data
Out[5]: 'C:\Programs\program1'
In [6]: print(data)
C:\Programs\program1
In [7]: new_data = 'C:\\Programs\\program1'
In [8]: new_data
Out[8]: 'C:\\Programs\\program1'
In [9]: print(new_data)
C:\Programs\program1
In [21]: p = '\\'.join(("C:\Programs\program1").split('\'))
In [22]: p
Out[22]: 'C:\\Programs\\program1'
In [23]: print(p)
C:\Programs\program1
我正在使用 pathlib Path
模块来存储我的几个程序的路径。问题是,当我去使用这个变量时,我最终得到了一个错误,因为 \
变成了 \
,系统将其解释为一个特殊字符。我的理解是,根据 OS,Path
模块会相应地处理这个问题。 (我正在使用 Windows)
这是我的代码的重现:
from pathlib import Path
def get_dictionary():
path1 = Path("C:\Programs\program1")
path2 = Path("C:\Programs\program2")
path3 = Path("C:\Programs\program3")
path4 = Path("C:\Programs\program4")
info = {
"program1" : str(path1),
"program2" : str(path2),
"program3" : str(path3),
"program4" : str(path4)
}
return info
if __name__ == "__main__":
theInfo = get_dictionary()
print(theInfo['program1'])
print(theInfo['program2'])
print(theInfo['program3'])
print(theInfo['program4'])
print(theInfo)
控制台输出如下:
C:\Programs\program1
C:\Programs\program2
C:\Programs\program3
C:\Programs\program4
{'program1': 'C:\Programs\program1', 'program2': 'C:\Programs\program2', 'program3':
'C:\Programs\program3', 'program4': 'C:\Programs\program4'}
所以我的问题是:假设我想使用 theInfo['program1']
。我得到 C:\Programs\program1
但我需要得到 C:\Programs\program1
。我该怎么做呢?感谢您的帮助!
编辑:我从字典中得到的值被放置在一个字符串中,该字符串最终成为 Tcl 文件中的一行。例如我有一个函数,我写:
f"puts {theInfo['program1']}"
我期望的位置:
puts C:\Programs\program1
但我得到:
puts C:\Programs\program1
对于其他字符,这将解释为制表符、换行符等...
这个现象是由Escape character '\'
引起的,如果你真的希望转义数据是C:\Programs\program1
,你可以拆分路径然后加入\\
.
In [4]: data = 'C:\Programs\program1'
In [5]: data
Out[5]: 'C:\Programs\program1'
In [6]: print(data)
C:\Programs\program1
In [7]: new_data = 'C:\\Programs\\program1'
In [8]: new_data
Out[8]: 'C:\\Programs\\program1'
In [9]: print(new_data)
C:\Programs\program1
In [21]: p = '\\'.join(("C:\Programs\program1").split('\'))
In [22]: p
Out[22]: 'C:\\Programs\\program1'
In [23]: print(p)
C:\Programs\program1