繁体   English   中英

从一个文件中打开多个文件

[英]Open multiple files from a file

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

例如:

第1层= C:\\ User \\ Files \\ Menu \\ Menu.snt

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

问题是当我尝试打开C:\\ User \\ Files \\ Menu \\ Menu.snt时, python不喜欢\\ 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

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()

这是我的解决方案:

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

readlines创建一个包含文件中所有行的列表,无需拆分整个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM