7

我有一个类似于下面给出的目录结构。

         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 也要分开保存。

4

2 回答 2

13

您必须加入当前目录和名称才能获得文件的绝对路径:

for root, dirs, files in os.walk(apkLocation + apkFolder):
    for name in files:
        if name.endswith(("lib", ".so")):
            os.path.join(root, name)

它也记录在这里http://docs.python.org/3/library/os.html#os.walk

于 2013-09-17T22:08:59.867 回答
0

您首先需要加入当前目录和文件名以获取文件的整个路径:对于根目录、目录、os.walk 中的文件(apkLocation + apkFolder):对于文件中的名称:if name.endswith(("lib ", ".so")): os.path.join(root, name)

于 2021-03-04T18:25:37.043 回答