【问题标题】:if file don't exist using os.walk如果文件不存在使用 os.walk
【发布时间】:2020-07-18 12:29:56
【问题描述】:

有没有一种简单的方法来检查文件是否存在于整个文件夹结构中而无需循环? (必须使用os.walk

"if file exist in in my_dir and its sub directories"
    for root, dirs, files in os.walk(my_dir):
       # do stuff
else:
    print("file does not exist")

【问题讨论】:

  • 这能回答你的问题吗? Python function that similar to bash find command
  • 使用 break 并取消缩进你的 else 块。
  • 目的是首先全局检查文件是否存在,如果存在则开始循环浏览文件夹以搜索它,否则执行其他操作
  • 那么,该文件可以存在于一个目录或其任何子目录中吗?在这种情况下,您无法避免必须递归搜索目录以查找文件。
  • 所以如果不使用循环,我就无法检查文件是否在该目录或其任何子目录中?

标签: python os.walk


【解决方案1】:

如下使用glob.glob

import glob

fname = 'some_file.txt'
my_dir = '/some_dir' # can also be a relative path
files = glob.glob(f'{my_dir}/**/{fname}', recursive=True)
if files: # list of files that match
    # do something

glob.glob 现在将在目录my_dir 或其任何子目录中查找文件some_file.txt

【讨论】:

  • 它工作正常,我可以将此代码合并到一个方法中并避免嵌套循环,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2016-10-17
  • 2016-05-31
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多