python - 迭代子目录中的文本文件

标签 python loops

如何仅迭代目录中的文本文件?到目前为止我所拥有的是;

for file in glob.glob('*'):
    f = open(file)
    text = f.read()
    f.close()

这有效,但是我必须将 .py 文件存储在同一目录(文件夹)中才能使其运行,因此迭代包含 .py 文件本身。理想情况下,我想要命令的是;

  1. “查看此子目录/文件夹,并迭代其中的所有文件”

或者...

  • “查看此目录中的所有文件并迭代那些扩展名为 .txt 的文件”
  • 我确定我要求的东西相当直接,但我不知道如何继续。也许值得我强调的是,我通过反复试验获得了 glob 模块,因此,如果这是解决此特定方法的错误方法,请随时纠正我!谢谢。

    最佳答案

    glob.glob 函数实际上采用通配模式作为其参数。 例如,"*.txt"会匹配名称以.txt结尾的文件。

    以下是如何使用它:

    for file in glob.glob("*.txt"):
        f = open(file)
        text = f.read()
        f.close()
    

    但是,如果您想排除某些特定文件,例如 .py 文件,则 globbing 语法不直接支持此功能,如 here 所述。 .

    在这种情况下,您需要获取这些文件,并手动排除它们:

    pythonFiles = glob.glob("*.py")
    otherFiles = [f for f in glob.glob("*") if f not in pythonFiles]
    

    关于python - 迭代子目录中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432084/

    相关文章:

    python - 为什么 python 日志模块旋转日日志会困惑?

    python - 如何解决在python中导入torch的ValueError

    SQL Server : Endless WHILE EXISTS loop

    ruby-on-rails - rails : fields_for with index?

    python - 考虑到每个项目可以有超过 1 个主题,如何将数据集中每个项目的主题转换为特征向量

    python - 删除 Pandas 中与您的标题匹配的行

    python - 从图像中删除网格

    java - 我在 hashmap 上的 for 循环出错

    java - 在 Java 的 for 循环中使用 Println 函数?

    python - 在列表列表中搜索