Discuss / Python / 交作业,思路有点乱,注释了所有的步骤

交作业,思路有点乱,注释了所有的步骤

Topic source

努云尼尼

#1 Created at ... [Delete] [Delete and Lock User]
#!/user/bin/env python3
# -*- coding: utf-8 -*-

'os模块的使用'

__author__ = 'sun';

#输入任意字符串,即可在当前工作目录及其所有子目录下查询包含此字符串的文件和文件夹

import os;
import pdb;

def filefilter(path,querylist = {}):                #取得当前目录下所有文件的函数
    filelist = [];
    folderlist = [];
    length = len(folderlist);
    for file in os.listdir(path):                    #遍历当前目录
        if file.find('.') != -1:                    #取出带扩展名的文件
            filelist.append(file);
        else:
            folderlist.append(file);                #取出不带扩展名的文件夹
    querylist[path] = filelist + folderlist;        #将本次查询结果以"目录":"文件(夹)列表"的dict形式保存
    if length < len(folderlist):
        for folder in folderlist[length:]:
            filefilter(os.path.join(path,folder));
    return querylist;

def query(s,dict):                                    #根据文件列表查询目标文件的函数
    for (path,filelist) in dict.items():            #遍历文件列表
        for file in filelist:
            if file.find(s) != -1:
                print("ABS路径为:", os.path.join(path,file));

s = input('请输入要查询的字符串');
dict = filefilter(os.getcwd());
query(s,dict);

有个问题想问一下老师: 现在这两个方法可以达成题目2的需求, 但当我想将它们封装在一个类中的时候,会提示其中的folderlist变量未被声明 尝试过定义全局变量之后使用global来调用这些变量,但是还是有类似的问题 请问我该如何封装这两个方法呢?

思路不太好,如果搜索的文件很多,这个程序把内存撑爆


  • 1

Reply