我在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")
答案 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")
答案 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