python - 无法在 Python 3 中打印生成器表达式

标签 python python-3.x

我已经尝试过 print(list(....)) 应该可以,但在这种情况下,它不会。

我正在创建一个字典directory names 作为keyslistfile 将每个 目录 中的名称作为。我正在使用 os.walk

import os
d = {}
for x,y,z in os.walk(path_folders):
    for f in y:
        if f not in d:
            d[f] = []
        d[f].append(i for i in z)    

print (d)

我将 dictionary 作为输出,但我无法通过 values printloop生成器表达式。同样,我尝试了 listloop 但它不起作用。

{'folder4': [<generator object <genexpr> at 0x0000000004B8B798>], 'folder5': [<generator object <genexpr> at 0x0000000004B8BCF0>], 'subfolder6': [<generator object <genexpr> at 0x0000000004B95E10>], 'subfolder4': [<generator object <genexpr> at 0x0000000004B8B990>], 'subfolder5': [<generator object <genexpr> at 0x0000000004B95360>], 'forder2': [<generator object <genexpr> at 0x0000000004B8BC18>], 'folder6': [<generator object <genexpr> at 0x0000000004B8B510>], 'folder3': [<generator object <genexpr> at 0x0000000004B853A8>], 'folder1': [<generator object <genexpr> at 0x0000000004921CF0>]}

最佳答案

使用extend 而不是append。问题是您没有遍历生成器来获取结果,而只是将结果的 promise 放入字典中。

这段代码对我有用。

import os

path_folders = "/path/to/stuff"

d = {}
for x,y,z in os.walk(path_folders):
    for f in y:
        if f not in d:
            d[f] = []
        d[f].extend(i for i in z)

print (d)

编辑:

好吧,我一定是之前漏掉了什么……dirnames 是该目录中所有目录的列表,而 filenames 只是该目录中的所有文件,而不是子目录。我知道这件事有些不对劲。所以我将范围限制在一个文件夹中,这样我可以很容易地看到里面有什么文件,并做了一些测试。我们使它变得比它必须的更复杂。

import os

path_folders = "/path/to/stuff/limited"

d = {}
for dirpath, dirnames, filenames in os.walk(path_folders):
    d[dirpath] = filenames

print(d)

dirpath 是完整路径。 dirnames 是该路径中的所有目录。 filenames 是该路径中的所有文件。

如果您想要所有这些路径所在的当前文件夹名称,您将需要修剪 dirpath 以获取它。 dirpath.split('/')[-1] 应该为您完成。

通过上述修剪和代码,我得到了这些结果。

{'directory1': ['file1', 'file2'], 'directory2': ['file3', 'file4']}

关于python - 无法在 Python 3 中打印生成器表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33728757/

相关文章:

Python - 在一行中打印多个函数

Python 导入 : AttributeError: 'module' object has no attribute 'test'

python - 在 timeit 中使用分号

python - 如何用特定集合中的元素填充 python 中的列表?

python - 十六进制到字符串的转换

python - 如何在 Mac OS X 上为 Python 3 安装 pip?

python - excel 文件处理 xlrd 期间的 pytest 警告

Python 游戏逻辑

python - 使用决策树进行自定义数据预测

python - 尝试使用 Selenium 将文件上传到网络浏览器