我正在尝试列出所有目录(/ home / dir下面的一个级别)及其内容。此代码正常工作,但是当我将字典转换为pandas数据帧时,目录名称与文件名不匹配。
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列数据框?
答案 0 :(得分:2)
我不确定你的最终结果应该是什么样的,但是frequency conversion会为你做完整的递归!没有必要在第二个循环中迭代dirnames
:
import os
mypath = '/home/'
myd = {}
for (here, dirs, files) in os.walk(mypath):
for file in files:
myd[here] = '.'.join(files)
print(myd)
这是python 3代码;它python 2 file
是一个关键字,不应该用作变量名......
<强>更新强>
如果您只需要输入目录下一级,则无需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)