【问题标题】:Order in which files are read using os.listdir? [duplicate]使用 os.listdir 读取文件的顺序? [复制]
【发布时间】:2017-06-13 22:33:10
【问题描述】:

在执行以下代码时,Python 是否有顺序遍历提供的目录中的文件?是按字母顺序的吗?我如何建立这些文件循环的顺序,按创建/修改日期或字母顺序)。

import os
for file in os.listdir(path)
    df = pd.read_csv(path+file)
    // do stuff

【问题讨论】:

  • os.listdir(path) :返回一个列表,其中包含路径给定的目录中的条目名称。该列表按任意顺序排列,不包括特殊条目“.”。和 '..' 即使它们存在于目录中。

标签: python for-loop listdir


【解决方案1】:

你问了几个问题:

  • Python 循环文件是否有顺序?

不,Python 不会强加任何可预测的顺序。 docs 说“列表是任意顺序的”。如果命令很重要,你必须强加它。实际上,文件以底层操作系统使用的相同顺序返回,但不能依赖于此。

  • 是按字母顺序排列的吗?

可能不会。但即使是你也不能依赖它。 (见上文)。

  • 如何建立订单?

for file in sorted(os.listdir(path)):

【讨论】:

  • -1。正如 jOOsko 指出的那样,文档说“任意顺序”。任意 != os 顺序。这也是我的经验,你不能依赖或期望操作系统命令。如果顺序很重要,你必须强加它。
  • 谢谢,@MalikA.Rumi。感谢您的帮助。
【解决方案2】:

根据文档:“列表按任意顺序”

https://docs.python.org/3.6/library/os.html#os.listdir

如果您想建立一个顺序(在这种情况下按字母顺序),您可以对其进行排序。

import os
for file in sorted(os.listdir(path)):
    df = pd.read_csv(path+file)
    // do stuff

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多