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 の名前を保存し、パスが /lib/A/file1.so、/lib/A/file2.so として保存される必要がある「.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 に答える