我有一个类似下面给出的目录结构。
MainFolder
|
[lib]
/ | \
[A] [B] [C] -- file1.so
| | file2.so
file1.so file1.so
file2.so file2.so
我正在尝试在该结构中寻找可能不存在的'lib'文件夹。所以我使用以下内容来检查'lib'文件夹是否存在:
if os.path.isdir(apkLocation + apkFolder + '/lib/'):
如果存在lib文件夹,那么我继续搜索'lib'中的文件夹。我必须存储文件夹A,B和C的名称,并查找以“.so”结尾的文件,其路径应存储为/lib/A/file1.so,/lib/A/file2.so等等上。
if os.path.isdir(apkLocation + apkFolder + '/lib/'):
for root, dirs, files in os.walk(apkLocation + apkFolder):
for name in files:
if name.endswith(("lib", ".so")):
print os.path.abspath(name)
这给了我一个
file1.so
file2.so
file1.so
file2.so
file1.so
file2.so
期望的输出:
/lib/A/file1.so
/lib/A/file2.so
/lib/B/file1.so
/lib/B/file2.so
/lib/C/file1.so
/lib/C/file2.so
以及文件夹A,B和C将单独保存。
答案 0 :(得分:10)
您必须加入当前目录和名称以获取文件的绝对路径:
for root, dirs, files in os.walk(apkLocation + apkFolder):
for name in files:
if name.endswith(("lib", ".so")):
os.path.join(root, name)
答案 1 :(得分:0)
您首先需要加入当前目录和文件名以获取文件的整个路径: 对于 os.walk(apkLocation + apkFolder) 中的根、目录、文件: 对于文件中的名称: 如果 name.endswith(("lib", ".so")): os.path.join(root, name)