python循环中append_python,_[Python]list.append()在for循环中每次添加的都是最后的一个元素,python - phpStudy...

[Python]list.append()在for循环中每次添加的都是最后的一个元素

先贴出源码吧,这段代码我想返回一个list,list中的元素由N个dict组成, dict中会包含目录下文件的名称,大小和最后修改时间(ps.大小和最后修改时间没有贴出来)

import os

def listDirectory(path):

pathlist = []

info = {}

if os.path.isdir(path):

for f in os.listdir(path):

if not f.startswith('.'): #排除隐藏文件

info['name'] = f

pathlist.append(info) #将dict添加进list中

return pathlist,len(pathlist)

else:

return -1,-1

尝试去使用这个函数查询某个文件夹下的内容时,目录文件是如下所示:

lishuo@DELL:~$ ls

connect.sh github nohup.out rjsupplicant tasks 下载

然而,在我调用这个函数去查询某个目录下的文件时,返回的list中只会显示这个文件夹下的最后一个文件,结果如下:

In [1]: from disp_list import listDirectory

In [2]: listDirectory('/home/lishuo')

Out[2]:

([{'name': 'nohup.out'},

{'name': 'nohup.out'},

{'name': 'nohup.out'},

{'name': 'nohup.out'},

{'name': 'nohup.out'},

{'name': 'nohup.out'}],

6)

我感觉问题应该是和python的闭包有关,但是这段代码不知道该从何入手修改?请高手指导,感谢所有花时间阅读我的问题的人^_^

我来补充一点,有点进展,但是不知道为什么?

import os

def listDirectory(path):

pathlist = []

if os.path.isdir(path):

for f in os.listdir(path):

info = {}

if not f.startswith('.'):

info['name'] = f

pathlist.append(info)

return pathlist,len(pathlist)

else:

return -1,-1

结果:

In [1]: from disp_list import listDirectory

In [2]: listDirectory('/home/lishuo')

Out[2]:

([{'name': 'github'},

{'name': 'connect.sh'},

{'name': 'tasks'},

{'name': '\xe4\xb8\x8b\xe8\xbd\xbd'},

{'name': 'rjsupplicant'},

{'name': 'nohup.out'}],

6)

把info字典的定义放在for循环的里面,结果显示就正常了,百度知道查到的但是不知道为什么?字典是可变对象,初始化一定不能放在for循环内部,请问这是为什么?

相关阅读:

安装oracle时,如何指定jdk 或者如何解决提示框显示不全

Hibernate重复更新导致系统变慢直至崩溃

关于cell重用的一些很纠结的问题(来大神解释下)

ionic怎么在虚拟机上运行

从oracle数据库中导出文本格式的数据

微信jssdk分享缩略图,在ios下分享给微信好友无法显示缩略图

android如何获取所有目录下面的所有文件的指纹

c++ 临时变量问题?

flask web开发第17章push完成后启动出现问题?

Symfony表单都是后端输出的吗?

Android Studio新建工程运行直接报错,我没有添加任何代码。

列表问题还是别的,求看看?

html5中无法使用adBanner作为img的id

微信浏览器 css3圆角问题

Android开发,使用ViewVideo无法播放mp4文件?

python新手问题——int(input())出错

JS一个立即执行函数表达式的疑问

win7的ipv4的客户端和服务器端

已经将ic_lanucher改为第一张图片了,可是为什么还是现实系统默认图片的?

xampp升级php 7.0之后的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值