【问题标题】:Fast way to read filename from directory?从目录中读取文件名的快速方法?
【发布时间】:2010-01-03 10:29:55
【问题描述】:

给定/foo/bar 的本地目录结构,并假设给定路径仅包含一个文件(文件名和内容无关紧要),获取该单个文件的文件名的合理快速方法是什么(不是文件内容)?

【问题讨论】:

  • 您对哪些替代品进行了基准测试?选择不多:osglob 是两个大的。你从运行timeit 中学到了什么?您对基准测试结果有什么具体问题?
  • 我的意思是,“鉴于我需要一个快速的解决方案来禁止运行成熟的基准测试,什么是一种相当快速的方法......”我将相应地编辑标题,感谢您指出这一点。
  • @prometheus:您的评论比原来的问题更没有意义。只有两个选择。是什么让你认为一个人会比另一个人更快?既然只有两个,是什么阻止你运行timeit 两次?我真的不清楚你为什么在这里问这个。
  • 我从来没有像你暗示的那样要求一个彻底的基准解决方案,而是一个简单的指针如何获取该文件名,因为 os.listdir 函数在我的雷达下滑落,并且浏览 os.path 文档没有'不会产生一种合理有效的方式来获取该文件名。我希望这能解决问题。我进行了编辑,我看不出你对我的方法的反复质疑对线程有什么好处。

标签: python path


【解决方案1】:

os.listdir() 的第一个元素

import os
os.listdir('/foo/bar')[0]

【讨论】:

  • 嘿...我应该考虑一下:-p
【解决方案2】:

好吧,我知道这段代码可以工作......

for file in os.listdir('.'):
    #do something

【讨论】:

  • 谢谢,gimel 让它更短了。
【解决方案3】:

你也可以使用 glob

import glob
print glob.glob("/path/*")[0]

【讨论】:

    【解决方案4】:

    os.path.basename 会为你返回文件名

    因此您可以通过添加文件路径将其用于确切的一个文件:

    os.path.basename("/foo/bar/file.file")
    

    或者您可以遍历文件夹中的文件并读取所有名称

    file_src = "/foo/bar/"
    for x in os.listdir(file_src):
            print(os.path.basename(x))
    

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      相关资源
      最近更新 更多