0
#!/usr/bin/env python3.2
import os
import sys


fileList = []
rootdir = sys.argv[1]
for subdir, dirs, files in os.walk(rootdir, followlinks=True):
    for file in files:
            f = os.path.join(subdir,file)
            if os.path.islink(file):
                countlink = countlink+1
                linkto = os.readlink(f)
                print(linkto)

このコードに /Current というフォルダーとファイル /Current/file.exe およびシンボリック リンク /Current/link を指定すると、「islink」は「リンク」シンボリック リンクを認識しませんが、それをディレクトリと見なし、実際のファイルに移動します。にリンクします。私の要件は、シンボリックリンクが見つかったら停止して印刷することです。私はPython3.2を使用しています

4

1 に答える 1

1

問題は、ターゲットの名前である readlink が返すものを出力しているようです。さらに、中間ループですべてのファイルを印刷しています。followLinks の True 値により、シンボリック リンクされたディレクトリへの再帰が発生します。最後に、ディレクトリへのシンボリックリンクはディレクトリに保存されますが、ファイルには保存されません。以下が機能するはずです。

for subdir, dirs, files in os.walk(rootdir, followlinks=False):
for file in files+dirs:
        f = os.path.join(subdir,file)
        if os.path.islink(file):
            countlink = countlink+1
            linkto = os.readlink(f)
            print("{} -> {}".format(f,linkto))
于 2012-02-23T01:29:37.090 に答える