Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从一个文件中打开多个文件_Python - Fatal编程技术网

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

Python 从一个文件中打开多个文件,python,Python,我需要打开一个有多个绝对文件目录的文件 例: 第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 i

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

例:

第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错误)'UnicodeScape'编解码器无法解码位置33-34的字节:格式错误\N字符转义

反斜杠字符
\
被Python解释器用作转义字符,以提供特殊字符

例如,
\n
是一个“新行”字符,就像按键盘上的返回键一样

因此,如果您试图读取类似于
newFolder1\newFolder2
的内容,解释器会将其读取为:

newFolder1
ewFolder2
其中新行字符已插入两行文本之间

您已经提到了一种解决方法:使用原始字符串,如
r'my\folder\structure'
,我有点好奇为什么这不能自动化

如果可以自动执行,可以尝试在文件路径中将单个反斜杠(
\
)的所有实例替换为双反斜杠(
\\
),这样应该可以工作

或者,您可以尝试查看
os
模块,并使用
os.path.join()
os.sep
操作符动态构建路径

最后一点:您可以通过替换以下内容来节省一些精力:

list.append(打开(line.split(“=”,1)[1]).read())


list=open(line.split(“=”,1)[1]).readlines()

Python解释器将反斜杠字符
\
用作转义字符,以提供特殊字符

例如,
\n
是一个“新行”字符,就像按键盘上的返回键一样

因此,如果您试图读取类似于
newFolder1\newFolder2
的内容,解释器会将其读取为:

newFolder1
ewFolder2
其中新行字符已插入两行文本之间

您已经提到了一种解决方法:使用原始字符串,如
r'my\folder\structure'
,我有点好奇为什么这不能自动化

如果可以自动执行,可以尝试在文件路径中将单个反斜杠(
\
)的所有实例替换为双反斜杠(
\\
),这样应该可以工作

或者,您可以尝试查看
os
模块,并使用
os.path.join()
os.sep
操作符动态构建路径

最后一点:您可以通过替换以下内容来节省一些精力:

list.append(打开(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创建一个包含文件中所有行的列表,无需拆分整个字符串。

以下是我的解决方案:

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

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

执行
list.append(open(r{}).format(line.split(“=”,1)[1])).read())
work?
SyntaxError
发生在编译时,而不是运行时。错误与您的代码不匹配。does
list.append(open(r{}).format(line.split(“=”,1)[1]).read())
work?
SyntaxError
发生在编译时,而不是运行时。错误与您的代码不匹配。您的代码替换建议将导致列表中仅包含最后一个文件的行。此外,“解释器读取为”也不完全正确,具体取决于数据来自何处。您的代码替换建议将导致列表中仅包含最后一个文件的行。此外,“解释器将其解读为”并不完全正确,这取决于数据来自何处。