用python获取当前文件夹下的所有csv文件

昨天我们用python将所有csv文件写入数据库,进行数据保存供后续提取分析用,程序中有段代码是获取当前文件夹下的所有文件,这里单独提出来说明下哈:

  1. for folderName, subfolders, filenames in os.walk(path)

    主要用到的是os.walk这个函数,这个函数返回的是当前文件夹名称,子文件夹名以及当前文件夹下的所有文件名这三个值,然后每个值都是一个列表的形式,所以我们用for循环一下当前文件夹下所有文件;

  2. if '.csv' in file_name and file_name not in rf_content

    这一句主要作用是提取出.csv为后缀的文件,然后这个文件还不能在rf_content中存在;

  3. 那这个rf_content是什么呢?答案就是前面已经写入数据库的所有文件名称,这个rf_content是调用read_txt(filename_txt)获取的;

  4. 所以还有个函数write_txt(filename, filename_list),就是将本次写入数据库的文件名添加到txt文件中,避免下次重复写入。

# 读txt文件,这个txt里面存的上次写入数据库的所有文件名
def read_txt(filename):
    if os.path.exists(filename):
        rf = open(filename, 'r')
        rf_content = rf.read()
        rf.close()
        return rf_content
    else:
        return []


# 程序运行的最后把本次写入数据库的所有csv文件名 写入txt文件,防止下次重复写入
def write_txt(filename, filename_list):
    wf = open(filename, 'a')
    for i in filename_list:
        wf.write(i + '\n')
    wf.close()

# 该函数的作用是获取所有csv文件名,用filename_list存储并返回
def get_all_csv_name(path, filename_txt):
    rf_content = read_txt(filename_txt)
    filename_list = []
    for folderName, subfolders, filenames in os.walk(path):
        for file_name in filenames:
            if '.csv' in file_name and file_name not in rf_content:
                filename_list.append(file_name)
    return filename_list

你可能感兴趣的:(用python获取当前文件夹下的所有csv文件)