从文件中打开多个文件

时间:2017-04-27 12:28:17

标签: python

我需要打开一个包含多个绝对文件目录的文件。

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

2 个答案:

答案 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创建一个包含文件中所有行的列表,不需要拆分整个字符串。