如何在 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)