os.path.isdir() 不工作

os.path.isdir() is not working

即使我将目录路径传递给函数,

os.path.isdir() 也会返回 false。我正在处理代码片段。该代码创建了一个名为 "arquivos" 的文件夹,以进行测试,只需在其中创建一些文件/文件夹即可。

import os
class Arquivos():
    working_path = None
    arquivos = dict() 
    def __init__(self, pasta = "arquivos" ):
        directory = os.path.dirname(os.path.abspath(__file__)) 
        directory = os.path.join(directory,pasta) 
        try:
            if not os.path.exists(directory):
                os.makedirs(directory)
        except Exception as e:
            print(e)
        self.working_path = directory
    def atualiza_arquivos(self):
        """Cria uma lista com os arquivos e pastas do diretório
            de trabalho"""
        _lista = os.listdir(self.working_path)
        result = dict()
        for arq in _lista:
            """ bug ,era pra retornar True só quando
                fossem pastas. """ 
            caminho = os.path.join(self.working_path, arq)
            result['pasta'] = os.path.isdir(caminho)
            infos = os.stat(caminho)
            result['ultima_mod'] = infos[8]
            result['tam'] = infos[6]  
            self.arquivos[arq] = result 
if __name__ == "__main__":
    obj = Arquivos()
    obj.atualiza_arquivos()
    print(obj.arquivos)

您的 obj.arquivos 将拥有同一词典的副本(包含迭代的最后一个文件/目录的数据)。
这是因为 result 字典是在 外部 循环 (for arq in _lista:) 中创建的,对于迭代的每个项目,您只是覆盖 result 值并在 self.arquivos 中添加对它的引用。
要更正您的问题,请为每个迭代项创建一个 result 实例,方法是将其移动到循环中。

部分片段:

        # Rest of the code
        _lista = os.listdir(self.working_path)
        for arq in _lista:
            result = dict()
            # Rest of the code