在目录中递归查找给定文件
Find a given file recursively inside a directory
在目录中递归查找给定文件。我尝试的代码没有显示任何输出,尽管我有一个文件 C:\Users\anaveed\test\hoax\a.txt
代码下方
import glob
import os
os.chdir(r'C:\Users\anaveed\test')
for f in glob.iglob('a.txt', recursive=True):
print(f)
无输出
看来你需要。
import glob
for f in glob.iglob(r'C:\Users\anaveed\test\**\a.txt', recursive=True):
print(f)
这是另一种方法:
import os
path = r'C:\Users\anaveed\test'
filename = 'a.txt'
for root, dirs, files in os.walk(path):
for name in files:
if name == filename:
print(os.path.join(root, name))
一些评论:
- 如果不指定通配符,则不需要使用
glob
,只需使用os.walk()
- 您无需移动到特定路径来查找其中的文件,只需将路径保存到变量中即可。
- 将它包装成一个函数会更好(也许使用列表理解)。
glob
解决方案通常更快。
在目录中递归查找给定文件。我尝试的代码没有显示任何输出,尽管我有一个文件 C:\Users\anaveed\test\hoax\a.txt
代码下方
import glob
import os
os.chdir(r'C:\Users\anaveed\test')
for f in glob.iglob('a.txt', recursive=True):
print(f)
无输出
看来你需要。
import glob
for f in glob.iglob(r'C:\Users\anaveed\test\**\a.txt', recursive=True):
print(f)
这是另一种方法:
import os
path = r'C:\Users\anaveed\test'
filename = 'a.txt'
for root, dirs, files in os.walk(path):
for name in files:
if name == filename:
print(os.path.join(root, name))
一些评论:
- 如果不指定通配符,则不需要使用
glob
,只需使用os.walk()
- 您无需移动到特定路径来查找其中的文件,只需将路径保存到变量中即可。
- 将它包装成一个函数会更好(也许使用列表理解)。
glob
解决方案通常更快。