簡體   English   中英

Python目錄旅行os.path

[英]Python Directory traveling os.path

我嘗試創建一個可以遞歸地遍歷多個目錄並以分層方式打印文件列表的程序,例如:

Folder
----x.c
----x.bin
----Folder
---------x.c

我嘗試使用類似程序(帶有文件/文件夾詳細信息):

#!/usr/bin/python

import os
for item in os.listdir(".") :
        if os.path.isdir(item) :
                print "-" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        elif os.path.isfile(item) :
                print item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print "Nothing \n"

但是我不能進入我嘗試使用的任何目錄(這里是A目錄):

#!/usr/bin/python

import os
for item in os.listdir(".") :
        if os.path.isdir(item) :
                print "-" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        elif os.path.isfile(item):
                print item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print "Nothing"

for item in os.listdir("A") :
        if os.path.isdir("A") :
                print "-" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)

        elif os.path.isfile("A") :
                print "--" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print "Nothing"

清單是錯誤的,我不明白為什么我不能只是從。 到A以及操作方法。最糟糕的是,如果我繼續使用B(這里是第二個文件夾):

#!/usr/bin/python

import os
for item in os.listdir(".") :
        if os.path.isdir(item) :
                print "-" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        elif os.path.isfile(item):
                print item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print "dunno"

for item in os.listdir("A") :
        if os.path.isdir("A") :
                print "-" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)

        elif os.path.isfile("A") :
                print "--" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print "lulz"

for item in os.listdir("A/B") :
        if os.path.isfile("A/B") :
                print "---" + item + '\t' + str(os.stat(item).st_size) + "kb" + '\t' + str(os.stat(item).st_atime)
        else :
                print 'Nothing'

我認為您想使用os.walk

for (cur, dirs, files) in os.walk('.'):
    pass

這將為您提供當前目錄,當前目錄中的目錄列表以及當前目錄中的文件列表。

我想你想要類似的東西

for (cur, dirs, files) in os.walk('.'):
    depth = len(cur.split('/'))
    print "--" * depth, cur
    for fname in files:
        print "--" * (depth + 1), fname

從此答案中借來了一點: 使用Python列出目錄樹結構

import os

def list_files(path, spaceChar=' ', spaceWidth=4):
    for root, dirs, files in os.walk(path):
        level = root.replace(path, '').count(os.sep)
        indent = spaceChar * (spaceWidth * level)
        print('{}{}/'.format(indent, os.path.basename(root)))
        subindent = spaceChar * spaceWidth * (level + 1)
        for f in files:
            print('{}{}'.format(subindent, f))

list_files(".", "-", 3)

暫無
暫無

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

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