我需要打开一个包含多个绝对文件目录的文件。
EX:
第1层= C:\ User \ Files \ Menu \ Menu.snt
第2层= C:\ User \ Files \ N0 - Vertical.snt
问题是,当我尝试打开 C:\ User \ Files \ Menu \ Menu.snt 时,python不喜欢 \ U 或 \ ñ
我可以使用r"C:\User\Files\Menu\Menu.snt"
打开,但我无法自动完成此过程。
file = open(config.txt, "r").read()
list = []
for line in file.split("\n"):
list.append(open(line.split("=",1)[1]).read())
打印出来:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 33-34: malformed \N character escape
答案 0 :(得分:2)
反斜杠字符\
被Python解释器用作转义字符,以便提供特殊字符。
例如,\n
是一个“新行”字符,就像按下键盘上的Return键一样。
因此,如果您尝试阅读newFolder1\newFolder2
之类的内容,则解释程序会将其读作:
newFolder1
ewFolder2
在两行文字之间插入了新行字符。
您已经提到过一种解决方法:使用像r'my\folder\structure'
这样的原始字符串,我有点好奇为什么这不能自动化。
如果你可以自动化它,你可以尝试用文件路径中的双反斜杠(\
)替换单个反斜杠(\\
)的所有实例,这应该有效。
或者,您可以尝试查看os
模块,并使用os.path.join()
和os.sep
运算符动态构建路径。
最后一点:您可以通过替换来节省一些工作:
list.append(open(line.split("=",1)[1]).read())
通过
list = open(line.split("=",1)[1]).readlines()
答案 1 :(得分:0)
这是我的解决方案:
file = open("config.txt", "r").readlines()
list = [open(x.split("=")[1].strip(), 'r').read() for x in file]
readlines创建一个包含文件中所有行的列表,不需要拆分整个字符串。