2012-09-29 109 views
0

的名單我在這裏有這樣的代碼......它生成的文件和文件夾列表中的目錄生成文件

import os 
for x in os.listdir("C:\Users"): 
    text = text + "\n" + x 
f = open("List.txt", "w") 
f.write(text) 
f.close() 

但是我怎樣才能得到它做兩件事情...

首先閱讀文件夾中的內容並繼續操作,直到只有一個孩子。

其次,當它下降一級時,它會添加一個選項卡。像這樣

Level 1 (parent) 
    Level 2 (child) 

我怎樣才能得到它添加該選項卡?對於無限的水平?

+0

我不認爲''C:\ Users \ Fabian \ Desktop \「'編譯。 – kennytm

+0

我還有一些其他的文件,但我把它關掉了。現在應該工作..除非你的用戶是'Fabian',否則它有0.99的可能性不適合你。 – FabianCook

+1

使用'/'作爲路徑分隔符,使用''''原始字符串,或者將你的反斜槓加倍:''C :\\ \\用戶......「'。 –

回答

3

使用os.walk()代替:

start = r'C:\Users' 
entries = [] 
for path, filenames, dirnames in os.walk(start): 
    relative = os.path.relpath(path, start) 
    depth = len(os.path.split(os.pathsep)) 
    entries.extend([('\t' * depth) + f for f in filenames]) 
with open("List.txt", "w") as output: 
    output.write('\n'.join(entries)) 

在每個循環中,path是文件名和dirnames中直接包含在目錄的完整路徑通過使用os.path.relpath我們提取「本地」的路徑,計算深度並使用它作爲選項卡的數量來預先添加每個文件名。