Python 3:搜索文件的子目录

时间:2016-12-16 20:17:47

标签: python os.path

我在Mac上使用Pycharm。在下面的脚本中,我在名为os.path.isfile的文件上调用dwnld.py函数。它打印出“文件存在”,因为dwnld.py位于脚本的同一目录(/Users/BobSpanks/PycharmProjects/my scripts)中。 如果我要将dwnld.py放在其他位置,如何在下面的代码中搜索从/Users/BobbySpanks dwnld.py开始的所有子目录?我试着阅读os.path笔记,但我找不到我需要的东西。我是Python的新手。

import os.path

File = "dwnld.py"

if os.path.isfile(File):
    print("File exists")
else:
    print("File doesn't exist")

4 个答案:

答案 0 :(得分:3)

试试这个

import os
File = "dwnld.py"

for root, dirs, files in os.walk('.'):
    for file in files: # loops through directories and files
        if file == File: # compares to your specified conditions
            print ("File exists")

取自:https://stackoverflow.com/a/31621120/5135450

答案 1 :(得分:3)

您可以使用glob module

import glob
import os

pattern = '/Users/BobbySpanks/**/dwnld.py'

for fname in glob.glob(pattern, recursive=True):
    if os.path.isfile(fname):
        print(fname)

简化版本,不检查dwnld.py是否实际为文件:

for fname in glob.glob(pattern, recursive=True):
    print(fname)

理论上,它现在可以是一个目录。

  

如果recursive为true,则模式'**'将匹配任何文件并为零   或更多目录和子目录。

答案 2 :(得分:2)

这可能对您有用:

import os
File = 'dwnld.py'
for root, dirs, files in os.walk('/Users/BobbySpanks/')
    if File in files:
        print ("File exists")

答案 3 :(得分:-1)

类似的东西,使用os.listdir(dir):

import os
my_dirs = os.listdir(os.getcwd())
for dirs in my_dirs:
    if os.path.isdir(dirs):
        os.chdir(os.path.join(os.getcwd(), dirs)
        #do even more