python - 递归搜索文件名,直到使用 python 找到文件
问题描述
使用python,我如何遍历Test.txt文件中的每一行并搜索Android.mk文件,如果没有找到,上一个目录级别并再次搜索,直到找到一个文件?
/home/jenkins/workspace/art/build/apps/XYZ.cpp
在上面的路径中,Android.mk 位于以下位置
/home/jenkins/workspace/art/build/apps/Android.mk
/home/jenkins/workspace/art/build/Android.mk
/home/jenkins/workspace/frameworks/base/rs/ABC.java
在上面的路径中,Android.mk 位于以下位置
/home/jenkins/workspace/frameworks/Android.mk
测试.txt
/home/jenkins/workspace/art/build/apps/XYZ.cpp /home/jenkins/workspace/frameworks/base/rs/ABC.java
欲望输出.txt
/home/jenkins/workspace/art/build/apps/Android.mk
/home/jenkins/workspace/frameworks/Android.mk
我的尝试
with open('/data/jenkins/workspace/Experiments/Test.txt','r') as f:
for apps in f.readlines():
print(apps.strip())
dirs = os.listdir( apps.strip() )
for file in dirs:
#print file
if file == 'Android.mk':
print "Android.mk found"
else:
os.chdir(apps.strip())
apps.strip()
print "Android.mk not found"
解决方案
您的脚本没有使用os.chdir('../')
. 这是一个在while循环中实现它的脚本。您正在调用os.chdir(apps.strip())
每个循环而不是os.chdir('../')
来提升一个级别。
with open('/data/jenkins/workspace/Experiments/Test.txt','r') as f:
for apps in f.readlines():
os.chdir(apps.strip()) # move into the folder here
print("Starting search in {}".format(apps.strip()))
found = False
while not found:
dirs = os.listdir(os.getcwd()) # print files in current directory (no argument needed)
for file in dirs:
if file == 'Android.mk':
print("Android.mk found")
found = True
break # end our for loop to save computations
if not found:
os.chdir("../") # move up a level for the next iteration of while loop
print("Android.mk not found...going up a level")
此外,dirs = os.listdir()
应该没有参数,所以它为当前文件夹(我们更改为的文件夹)获取它。否则,无论您在文件系统中的哪个位置,它都会返回相同的结果。
推荐阅读
- reactjs - 为什么将 redux 状态作为依赖项添加到“useEffect”挂钩时会导致应用启动时出现无限循环?
- python - 如何从 python 中的 url 列表中异步下载图像?
- scala - 如何以惯用的 Scala 方式编写涉及多个条件的 If-Else 循环?
- php - 显示要查看的 BLOB 图像数据
- python - 什么数据结构像字典一样工作?
- python - SSL CERTIFICATE_VERIFY_FAILED 在 Windows 10 上安装 Python 包
- flutter - 自定义 InputTextField 的验证器
- java - java.lang.NoSuchMethodError: com.google.gson.Gson.newBuilder()Lcom/google/gson/GsonBuilder;
- reactjs - 元素类型无效(错误):得到“未定义”
- javascript - 如何在“if”语句中访问属性?