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 值导致您递归到符号链接的目录。最后,任何指向目录的符号链接都存储在 dirs 中,而不是文件中。以下应该有效:

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 回答