在Python中以字符串形式进入目录

5 投票
2 回答
20576 浏览
提问于 2025-04-17 10:11

我在程序里硬编码了一些目录,像这样:

import os
my_dirs = ["C:\a\foo"
          ,"C:\b\foo"
          ,"C:\c\foo"
          ,"C:\t\foo"
          ]

后来我想执行一些操作,比如 os.path.isfile(my_dirs[3])。但是字符串 my_dirs[3] 出现了问题,因为 "\t" 是制表符的缩写,导致它变得乱七八糟。

我知道解决这个问题的方法之一是使用这个:

my_dirs = ["C:\\a\\foo"
          ,"C:\\b\\foo"
          ,"C:\\c\\foo"
          ,"C:\\t\\foo"
          ]

还有一个方法是使用正斜杠。

不过我喜欢直接从资源管理器复制目录到我的 Python 代码里。有没有办法告诉 Python 不要把 "\t" 转换成制表符,或者有什么其他办法解决我的问题吗?

2 个回答

8

我建议使用正斜杠或者双反斜杠。像ThiefMaster提到的那样,原始字符串可能会有点麻烦;比如,它不能以反斜杠结尾。所以像r'c:\foo\'这样的写法不是一个有效的原始字符串。你可以查看一下Python文档

r"\" 不是一个有效的字符串(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)

8

使用正斜杠或者原始字符串:r'C:\a\foo' 或者 'C:/a/foo'

其实,使用正斜杠是更好的选择,因为正如@Wesley提到的,原始字符串不能以单个反斜杠结尾。虽然在Windows上,os.path中的函数会使用反斜杠,但混用它们并不会造成问题。所以我建议在写死的路径中使用正斜杠,而不必担心os.path函数引入的反斜杠。

不过,别忘了,写死的路径本身就是个坏主意。特别是当你使用系统文件夹(包括“我的文档”和“应用数据”)时,最好使用WinAPI函数来获取这些路径,无论它们实际位于哪里。

撰写回答