2016-12-24 136 views
3

我想列出所有目录(/ home/dir下面的一个级别)和它的内容。此代码正在工作,但是当我将字典转换为熊猫数据框时,目录名称与文件名称不匹配。遍历目录路径

mypath='/home/' 
from os import walk 

myd=dict() 
for (dirpath, dirnames, filenames) in walk(mypath): 
    for i in dirnames: 
     for (dirpath1, dirnames1, filenames1) in walk(i): 
      myd[i]=','.join(filenames1) 


import pandas as pd 
df=pd.DataFrame(myd , index=[0]).T 
df.columns=['files'] 

pd.set_option('max_colwidth', 800) 
df 

有没有更好的方法来建立2列数据帧的目录和它的文件内容?

回答

2

我不完全确定你的最终结果应该是什么样子,但os.walk为你做了完整的递归!没有必要在第二循环遍历dirnames

import os 

mypath = '/home/' 

myd = {} 
for (here, dirs, files) in os.walk(mypath): 
    for file in files: 
     myd[here] = '.'.join(files) 

print(myd) 

这是蟒3代码;它蟒蛇2 file是一个关键字,不应该被用来作为变量名...

UPDATE

如果你只需要输入目录的下一级没有必要walk

myd = {} 
for name in os.listdir(mypath): 
    subdir = os.path.join(mypath, name) 
    if not os.path.isdir(subdir): 
     continue 
    myd[name] = '.'.join(os.listdir(subdir)) 

print(myd)