首页 > 解决方案 > Python:如何从 Path 对象中获取双反斜杠

问题描述

我正在使用该pathlib Path模块来存储我的几个程序的路径。问题是,当我去使用这个变量时,我最终\\得到了一个错误,因为它变成\了系统解释为特殊字符的一个。我的理解是,根据操作系统,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

对于其他字符,这解释为制表符、换行符等...

标签: pythonpython-3.xwindowsdictionarypath

解决方案


造成这种现象的原因是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

推荐阅读