从fi打开多个文件

2024-09-25 00:35:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要打开一个有多个绝对文件目录的文件。你知道吗

例如:

层1=C:\User\Files\Menu\菜单.snt

第2层=C:\User\Files\N0-垂直.snt

问题是当我试图打开C:\User\Files\Menu时\菜单.sntpython不喜欢\U\N

我可以用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

Tags: 文件inreadline菜单filesopenlist
2条回答

以下是我的解决方案:

file = open("config.txt", "r").readlines()
list = [open(x.split("=")[1].strip(), 'r').read() for x in file]

readlines创建一个包含文件中所有行的列表,不需要拆分整个字符串。你知道吗

反斜杠字符\被Python解释器用作转义字符,以便提供特殊字符。你知道吗

例如,\n是一个“新行”字符,就像按键盘上的回车键一样。你知道吗

因此,如果您试图读取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()

相关问题 更多 >