簡體   English   中英

os.walk沒有解析幾個目錄

[英]os.walk not parsing a few directories

我是python的新手,現在我正在嘗試一些東西,特別是:遍歷所有目錄和文件,並使用os.walk打印文件大小。

我的問題是,盡管這些目錄中存在文件,但該程序不會通過幾個目錄遞歸。 我的機器上的示例是目錄Python2.7。 這是在/ usr目錄中。 當我將頂部路徑指定為/ usr時,不會解析此目錄。 但是,當我特別提到Python2.7目錄的路徑時,它將通過它進行解析。 誰能指出問題在哪里幫助我? 這是我的代碼:

from os import walk, listdir, stat
from os.path import join, isdir, isfile, islink, getsize, abspath, dirname, realpath
from stat import ST_INO as st_ino
from sets import Set


def determine_parent_directory( root ):
     #print "parent-dirname : ", dirname( realpath( root ) )
     return stat( dirname( abspath( root ) ) ).st_ino

def determine_size( root, file ):
    size_type = ""
    file_size = getsize( abspath( ( join( root, file ) ) ) ) 
    if file_size < 1024:
        size_type = "bytes"
    else:
    if file_size > 1024:
        file_size /= 1024                  
        size_type = "Kb"
    if file_size > 1024:
        file_size /= 1024
        size_type = "Mb"
    if file_size > 1024:
        file_size /= 1024
        size_type = "Gb"
    if file_size > 1024:
        file_size /= 1024
        size_type = "Tb"

    return [file_size, size_type]

def walk_through( path ):
    total_size = 0
    for root, dirs, files in walk( path ):
        print root.split( "/" )[-1]
        print "\n"

        for file in files:
            if islink( abspath( join( root, file ) ) ):
                print "link"
                continue
            #total_size += determine_size( root, file )[0]
            file_size, size_type = determine_size( root, file )
            print "\t\t\t{0} -- {1} {2}".format ( file, file_size, size_type )
            #total_size += file_size
    print "\n" 
    #print total_size

def get_path_user():
    default_path = "/usr"
    walk_through( default_path )

if __name__ == '__main__':
    get_path_user()

它是符號鏈接嗎?

os.walk(top [,topdown = True [,onerror = None [,followlinks = False]]])

默認情況下,walk()不會向下瀏覽到解析為目錄的符號鏈接。 將Followlinks設置為True,以在支持符號鏈接的系統上訪問由符號鏈接指向的目錄。

注意:請注意,如果鏈接指向自身的父目錄,則將followlinks設置為True可能導致無限遞歸。 walk()不會跟蹤它已經訪問過的目錄。

檢查這些目錄上的權限-運行腳本的用戶帳戶是否具有這些目錄的權限?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM