【问题标题】:How to verify if a file is in a directory如何验证文件是否在目录中
【发布时间】:2020-04-02 16:48:11
【问题描述】:

我需要验证python目录中是否存在具有特定名称的文件。

我的目录:

D:\mydirectory\img\

我正在使用 python-decouple 来传递我在 '.venv' 中的目录的方式

os.path.exists(config('PATH_IMG'))

我需要一种方法来验证文件“photo.jpg”是否在“PATH_IMG”中。

我尝试使用 os lib,但是,在官方文档中没有显示这样做的方法。

其他,一些解决它的方法需要使用循环for,以放大代码复杂性,例如使用循环for。

我该怎么做?

【问题讨论】:

  • 您还没有真正发布您遇到的问题。请发布您遇到的具体问题(和错误消息),我们可以提供帮助。
  • 我贴了人,问题是我不知道如何验证文件是否存在,所以我没有实现代码。我有办法让文件可以。
  • @khuynh,如果你否定了我的帖子,你可以改变你对我的帖子的投票吗?非常感谢!

标签: python filenames


【解决方案1】:

构造文件的路径并使用os.path.isfile检查文件是否存在。

imagefile = os.path.join(config('PATH_IMG'), 'photo.jpg')
print(os.path.isfile(imagefile))

【讨论】:

    【解决方案2】:

    你可以使用 os.listdir 函数,它返回一个目录中的文件列表,所以:

    if "photo.jpg" in os.listdir(directory):
      return True
    

    还有功能:

    os.path.exists(directory + "/" + "photo.jpg")
    

    如果文件存在则直接返回

    【讨论】:

    • 感谢@Alessandro_Tonali。是吗!
    • 如果该文件夹中没有文件,但有一个名为“photo.jpg”的目录,这可能会产生错误的结果。
    【解决方案3】:

    我猜你正在尝试找出目录中是否存在文件。

    这可能会对您有所帮助:

    import os
    directory = <your_path>
    
    for r, d, f in os.walk(directory):
       for file in f:
          if file == "photo.jpg":
             print("Found it!")
    

    os.walk 返回 3 个变量,根、目录名和文件名。

    文件名在一个列表中:

    对于列表中的每个值,

    如果该值 == 你在寻找什么

    print 找到了。

    编辑:不太清楚为什么,但您似乎不想在主代码中使用 for 循环。

    这样做:

    def findfile(directory, filename):
       for r, d, f in os.walk(directory):
          for file in f:
             if file == filename:
                 print("Found it!")
    
    findfile(directory, "photo.jpg")
    

    现在您可以在需要时调用该函数,这应该“降低”代码复杂度

    【讨论】:

    • 唯一的方法是使用循环 for?有直接的方法吗?
    • 那么 for 循环有什么作用?它遍历每个文件并进行搜索。您可能可以定义一个函数来执行此操作,然后调用该函数。或者您可以尝试使用 。我不知道有比这种方式更清晰的方法。
    • 我关于循环的问题是增加了代码的复杂性。因此,我正在尝试找到一种直接执行此操作的方法。我想使用 os lib,但在文档中没有关于如何这样做的参考。
    猜你喜欢
    • 2018-11-21
    • 2014-02-01
    • 1970-01-01
    • 2014-02-18
    • 2011-03-02
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多