我正在尝试从txt文件中提取文件路径。我的文件说C:\ logs。 我用
with open(pathfile, "r") as f:
pathlist = f.readlines()
生成一个包含路径的列表,然后
path1 = str(pathlist)
将该行生成为字符串。该列表看到了该文件中的行,但是第二个命令添加了一个额外的反斜杠:C:\ logs。
然后我做
os.chdir(path1)
查看路径并收到错误
WindowsError:[错误123]文件名,目录名或卷标语法不正确:" [' C:\\ logs']"
这是为什么?我怎么能阻止它?
我希望文件中有许多路径,让脚本分别搜索每个路径。这是最好的方法吗?
非常感谢。
答案 0 :(得分:3)
您看到的额外反斜杠是一个“转义”字符,这就是字符串表示消除现有反斜杠歧义的方式。它实际上不是两个反斜杠
问题实际上是pathlist
是list
,而你强迫它是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)