Python3:在子目录中搜索文件
我正在Mac上使用Pycharm。在下面的脚本中,我正在调用名为Python3:在子目录中搜索文件,python,os.path,Python,Os.path,我正在Mac上使用Pycharm。在下面的脚本中,我正在调用名为dwnld.py的文件上的os.path.isfile函数。它打印出“文件存在”,因为dwnld.py位于脚本的同一目录中(/Users/bobsbanks/PycharmProjects/my scripts)。 如果要将dwnld.py放在不同的位置,如何让下面的代码从/Users/BobbySpanks开始搜索所有子目录以查找dwnld.py?我试着阅读os.pathnotes,但找不到我真正需要的东西。我是Python新手
dwnld.py
的文件上的os.path.isfile
函数。它打印出“文件存在”,因为dwnld.py
位于脚本的同一目录中(/Users/bobsbanks/PycharmProjects/my scripts
)。
如果要将dwnld.py
放在不同的位置,如何让下面的代码从/Users/BobbySpanks
开始搜索所有子目录以查找dwnld.py
?我试着阅读os.path
notes,但找不到我真正需要的东西。我是Python新手
import os.path
File = "dwnld.py"
if os.path.isfile(File):
print("File exists")
else:
print("File doesn't exist")
试试这个
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")
摘自:类似的内容,使用os.listdir(dir):
这可能适合您:
import os
File = 'dwnld.py'
for root, dirs, files in os.walk('/Users/BobbySpanks/'):
if File in files:
print ("File exists")
os.walk(top,top-down=True,onerror=None,followlinks=False)
产生
通过自上而下遍历目录树,可以查看目录树中的文件名
或者自下而上。对于树中以目录顶部为根的每个目录
(包括top本身),它生成一个3元组(dirpath、dirnames、,
文件名)。
为此,您可以使用:
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,则模式'**'
将匹配任何文件并为零
一个或多个目录和子目录
1) 缩进,2)您不需要
os.getcwd()
,只需使用。
,这是一样的。3) str.isfile()
不存在。我不知道他们为什么投票否决你,你有我的投票权将file.isfile(file)
改为file==file
(为了澄清起见,可能会更改名称。)除此之外,这是规范solution@UriGoren-我给出了我投反对票的三个理由。其中最重要的一点是,他的代码根本不起作用。它生成属性错误:“str”对象没有属性“isfile”@Robᵩ, 解决方案基本上没有问题,patric haugh提到了一个小小的错误,但我认为没有理由阻止一个用户花时间惩罚他,降低他已经很低的声誉。这可能不需要调用os.path.isfile()
。如果glob返回了它,则文件存在。我认为OP对存在比文件类型更感兴趣。这与有一个这样命名的目录很不一样。
for fname in glob.glob(pattern, recursive=True):
print(fname)