如何在 python 的输入文件中读取中间有可变输入的路径
How to make a path that has variable input in the middle read in a input file in python
这应该很简单,不知道为什么我不能让它工作。我正在尝试导入大量 .txt 文件作为更大过程的一部分,如下所示:
path = "C:/Users/A/B/"
with open(path + "*full.txt","r") as f:
contents =f.read()
print(contents)
我只是想在此文件夹路径中导入所有 .txt 文件(有很多),当我这样做时我得到:
OSError: [Errno 22] Invalid argument:
中间的字符串在每个文件之间是不同的,因此在完整文件之前有 *
它列出了参数后的路径(出于隐私原因我会省略它,但你明白了)我知道路径是正确的,为什么它给我这个错误?
当您在命令提示符下键入通配符时,如下所示:
cat /some/dir/*full.txt
shell执行通配符扩展并将完整的实际文件名传递给cat
。
但是Python不会那样做;没有shell。当你到达调用点 open()
时,你必须使用完整的真实文件名。
尝试查看 glob
模块。
您不能在 open()
中使用 *
。 open()
只能打开一个具有确切名称的文件。
您必须获取目录中的所有名称并使用 for
-loop 分别打开每个文件。
与glob.glob()
:
import glob
path = "C:/Users/A/B/"
for fullname in glob.glob( path + "*full.txt" ):
with open(fullname, "r") as f:
contents = f.read()
print(contents)
与os.listdir()
:
import os
path = "C:/Users/A/B/"
for name in os.listdir(path):
if name.endswith("full.txt"):
fullname = os.path.join(path, name):
with open(fullname, "r") as f:
contents = f.read()
print(contents)
这应该很简单,不知道为什么我不能让它工作。我正在尝试导入大量 .txt 文件作为更大过程的一部分,如下所示:
path = "C:/Users/A/B/"
with open(path + "*full.txt","r") as f:
contents =f.read()
print(contents)
我只是想在此文件夹路径中导入所有 .txt 文件(有很多),当我这样做时我得到:
OSError: [Errno 22] Invalid argument:
中间的字符串在每个文件之间是不同的,因此在完整文件之前有 * 它列出了参数后的路径(出于隐私原因我会省略它,但你明白了)我知道路径是正确的,为什么它给我这个错误?
当您在命令提示符下键入通配符时,如下所示:
cat /some/dir/*full.txt
shell执行通配符扩展并将完整的实际文件名传递给cat
。
但是Python不会那样做;没有shell。当你到达调用点 open()
时,你必须使用完整的真实文件名。
尝试查看 glob
模块。
您不能在 open()
中使用 *
。 open()
只能打开一个具有确切名称的文件。
您必须获取目录中的所有名称并使用 for
-loop 分别打开每个文件。
与glob.glob()
:
import glob
path = "C:/Users/A/B/"
for fullname in glob.glob( path + "*full.txt" ):
with open(fullname, "r") as f:
contents = f.read()
print(contents)
与os.listdir()
:
import os
path = "C:/Users/A/B/"
for name in os.listdir(path):
if name.endswith("full.txt"):
fullname = os.path.join(path, name):
with open(fullname, "r") as f:
contents = f.read()
print(contents)