python 字典 当参数传进函数的问题

kingofblack 2017-03-19 01:23:20
import os
import random

#获取所有盘符
def getFileTree():
root = []

for i in range(68,91): #不处理c盘
vol = chr(i) + ':/'
if os.path.isdir(vol):
root.append(vol)
#将C:\Users\Administrator加入
root.append("C:/Users/Administrator/")
return root

def find(path,fileDic): #fileDic是一个字典。key为文件夹名,value为图片名的列表
fileNameList = os.listdir(path)
imageList = []
for temp in fileNameList:
if temp.rfind('bmp' or 'gif' or 'jpg' or 'png'):
fileDict[path] = imageList
imageList.append(temp)
if os.path.isdir(temp):
find(path + '/' + temp)

def create():
root = getFileTree()
fileDic = {}
for rootName in root:
find(rootName,fileDic)
return fileDic

fileDic = dict()
fileDic = create()
print(fileDic)


Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
====================== RESTART: F:\python\imageTree.py ======================
Traceback (most recent call last):
File "F:\python\imageTree.py", line 37, in <module>
fileDic = create()
File "F:\python\imageTree.py", line 33, in create
find(rootName,fileDic)
File "F:\python\imageTree.py", line 24, in find
fileDict[path] = imageList
NameError: name 'fileDict' is not defined
>>>


问题在于 字典应该是可变的 那么传的是 引用值 这里的问题是因为 只有声明,但是还未分配空间吗?

ps: 这个程序是为了 搜索电脑里所有的符合格式的图片文件
结果应该是一个字典 key是存在图片的文件夹名 对应的value应该是一个图片的名字列表

初学 ,有c和java的一点经验
...全文
529 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingofblack 2017-03-19
  • 打赏
  • 举报
回复
一定是凌晨我白痴了
sanGuo_uu 2017-03-19
  • 打赏
  • 举报
回复
代码没仔细看。 这个,注意看报错信息啊,很有用的 它都说了问题在24行,并且name 'fileDict' is not defined(fileDict没有被定义)
suiziugo 2017-03-19
  • 打赏
  • 举报
回复
我倒。大凌晨的,哈以为是啥大问题,原来———— import os import random #获取所有盘符 def getFileTree(): root = [] for i in range(68,91): #不处理c盘 vol = chr(i) + ':/' if os.path.isdir(vol): root.append(vol) #将C:\Users\Administrator加入 root.append("C:/Users/Administrator/") return root def find(path,fileDic): #fileDic是一个字典。key为文件夹名,value为图片名的列表 fileNameList = os.listdir(path) imageList = [] for temp in fileNameList: if temp.rfind('bmp' or 'gif' or 'jpg' or 'png'): fileDict[path] = imageList imageList.append(temp) if os.path.isdir(temp): find(path + '/' + temp) def create(): root = getFileTree() fileDic = {} for rootName in root: find(rootName,fileDic) return fileDic fileDic = dict() fileDic = create() print(fileDic)

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧