AI智能
改变未来

python小功能

django实现将linux目录和文件名列出来

def index(request):obj=models.USER.objects.all()fileroot = \'d:\\machangwei\'fli = os.listdir(fileroot)print(fli)dirdic = {}filedic = {}for i in fli:file = os.path.join(fileroot, i)if os.path.isdir(file):dirdic[i] = fileprint(\'d:\', file)else:filedic[i] = fileprint(\'f:\', file)return render(request,\'index.html\',{\"obj\":obj,\'dirdic\':dirdic,\'filedic\':filedic})

视图函数

<h2>根目录下的目录和文件:</h2>{% for k,v in dirdic.items %}<a href=\"\" srcmcw=\"{{ v }}\">{{ k }}</a><br>{% endfor %}{% for k,v in filedic.items %}<a href=\"\" srcmcw=\"{{ v }}\">{{ k }}</a><br>{% endfor %}

前端展示

def  listfile(request):\'\'\'1、要获取前端传来的fp,当前目录绝对路径,跟据这个参数来os list目录,这里暂且用的是全路径2、:param request::param fname::return:\'\'\'# print(fname) #venv#print(request.GET) #<QueryDict: {\'fp\': [\'d:\\\\machangwei\\\\whl\']}>fp=request.GET.get(\'fp\',[\'m\'])  #d:\\machangwei\\venv  当前目录绝对路径fn=request.GET.get(\'fn\',\'\')  #当前目录名字,f子文件名字,这里貌似没用到# zfp=os.path.join(fp,fn) #当前目录下子文件绝对路径,我们传给后端的是allf,所以这个是错误的,新页面中的fp需要# 当前目录名字fp拼接当前目录下单个文件的名字print(request.GET)print(\'fp:\',fp) #fp: d:\\machangwei\\venvprint(\'fn:\',fn) #fn: venvif os.path.isdir(fp):allf=os.listdir(fp) #[\'Include\', \'Lib\', \'pip-selfcheck.json\', \'pyvenv.cfg\', \'Scripts\'] #列出当前目录下所有文件print(allf)return render(request,\'listfile.html\',{\'allf\':allf,\'fn\':fn,\'fp\':fp})

视图函数

<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>Title</title></head><body><h2>{{ fp }}\\{{ f }}目录下的目录和文件:</h2><p><a href=\"/index/\">返回首页</a></p>{% for f in allf %}<a href=\"/listfile/?fp={{ fp }}\\{{ f }}&fn={{ f }}\" name=\"{{ fp }}/{{ f }}\">{{ f }}</a><br>{% endfor %}</body></html>

前端程序效果展示:

else:file = open(\'%s\'%fp, \'rb\')response = HttpResponse(file)response[\'Content-Type\'] = \'application/octet-stream\'  # 设置头信息,告诉浏览器这是个文件response[\'Content-Disposition\'] = \'attachment;filename=\"%s\"\'%fnreturn response

程序

文件下载参考:https://www.jb51.net/article/135951.htm

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » python小功能