#!/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和files /Current/file.exe和一个符号链接/当前/链接,“islink”不识别“链接”符号链接,但认为它是一个目录并转到它链接到的实际文件。我的要求是在找到符号链接并打印时停止。我正在使用Python3.2
答案 0 :(得分: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))