列表使用str()将反斜杠\添加到字符串

时间:2014-04-14 15:38:05

标签: python string list path backslash

我正在尝试从txt文件中提取文件路径。我的文件说C:\ logs。 我用

with open(pathfile, "r") as f:
    pathlist = f.readlines()

生成一个包含路径的列表,然后

path1 = str(pathlist)

将该行生成为字符串。该列表看到了该文件中的行,但是第二个命令添加了一个额外的反斜杠:C:\ logs。

然后我做

os.chdir(path1)

查看路径并收到错误

  

WindowsError:[错误123]文件名,目录名或卷标语法不正确:" [' C:\\ logs']"

这是为什么?我怎么能阻止它?

我希望文件中有许多路径,让脚本分别搜索每个路径。这是最好的方法吗?

非常感谢。

3 个答案:

答案 0 :(得分:3)

您看到的额外反斜杠是一个“转义”字符,这就是字符串表示消除现有反斜杠歧义的方式。它实际上不是两个反斜杠

问题实际上是pathlistlist,而你强迫它是str。相反,请采用路径列表的第一个元素:

path1 = pathlist[0]

您最后也可能有换行符(另一种使用转义:\n\r)。要解决此问题,请使用.strip()

path1 = pathlist[0].strip()

答案 1 :(得分:1)

str(pathlist)将列表转换为字符串,结果为['C:\\logs'],这绝对不是有效路径。

with open(pathfile, "r") as f:
    for line in f:
        # print the path (=line)
        # strip() removes whitespace as well as the line break '\n' at the end
        print(strip(line))

或者你可以这样做:

for line in f:
    print(line.replace('\\n', ''))

或者:

for line in f:
    if line:
        print(line.splitlines()[0])

答案 2 :(得分:0)

假设 pathfile 的内容如下:

C:\Path1
C:\Path2
C:\Path3

readlines 会返回 pathfile 中所有行的列表。

[ 'C:\Path1', 'C:\Path2', 'C:\Path3' ]

在python列表中使用 str 会创建一个字符串,该字符串是python可解析列表的字面值。它不是你想要的。

"[ \"C:\\Path1\", \"C:\\Path2\", \"C:\\Path3\" ]"

你想要的是

import os

with open(pathfile, "r") as f:
   for line in f.readlines():
      path = line.strip() # strip newline characters from end of line
      os.chdir(path)