【问题标题】:Is there a faster way to find a file than by listing all files in the directory?有没有比列出目录中的所有文件更快的方法来查找文件?
【发布时间】:2020-08-26 15:25:48
【问题描述】:

我的工作流程如下所示:

for i in some_list:
    if i not in os.listdir(a_directory):
        x = do_something(i)
        x.to_pickle(f"{a_directory}/{i}")

os.listdir 很昂贵,因为目录很大,而且它位于网络文件系统上。

我有多个工人在做这项工作,所以我不能只列出目录的内容一次。如果我这样做了,那么我的工人就会重复他们的工作,而且do_something 毕竟比os.listdir 更昂贵。

有没有什么东西可以寻找特定文件的存在,而不是将它们全部转储到 python 列表中让我进行字符串匹配?

【问题讨论】:

    标签: python parallel-processing filesystems


    【解决方案1】:

    您可以根据这个问题直接检查文件是否存在:Check whether a file exists

    从那个答案:

    import os.path
    os.path.isfile(fname)
    

    或者:

    from pathlib import Path
    
    my_file = Path("/path/to/file")
    if my_file.is_file():
        # file exists
    

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多