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)
答案 0 :(得分:0)
您的obj.arquivos
将包含相同词典的副本(包含最后一个文件/目录迭代的数据)。
这是因为result
dict是在外部循环(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