读一个文件夹内的所有文件名字保存到一数组中

问题:
判断一个文件夹,将文件夹中所有文件的名字,按照顺序保存到数组当中

总结:用到的函数

os.path.isdir(dir_path):#判断路径是否是文件夹
os.access(save_path,os.F_OK) #判断文件,F_OK文件,W_OK可写,R_OK可读
os.path.exists(save_path) #判断文件夹或者文件

file_name = os.listdir(dir_path):#返回路径文件夹中的所有文件名数组
int( os.path.splitext(filename)[0] ) #splitext将文件名跟后缀分开,转化为int名
name.sort() #升序排序

name = "256.json"
int(name[:-5]) #文件名字 返回256
os.path.join(new_path, file) #与new_path+file一样

#第一种方法:(推荐)

def get_file_name(dir_path):
    import os
    name = []
    if os.path.isdir(dir_path): #isdir确定文件夹
        for filename in os.listdir(dir_path):  # 获取当前路径下的文件名
            name.append( int( os.path.splitext(filename)[0] ) )
        name.sort() #升序排序
        for i in range(len(name)):
            name[i] =dir_path + str(name[i]) + ".json" #拼接成绝对路径
        print(name[0:20])
    return name   

FILE_NAMES = get_file_name(r"data/dir_json/") 

第二种方法:

#得到文件夹内的文件名字
def get_file_name(new_path):
    import glob
    file_name = []
    name = os.listdir(new_path) #文件夹内的所有文件名字保存到这个数组中
    lens = len(name)
    print("file number:", lens)
    number=[]
    for i in range(len(name)):
        number.append(int(name[i][:-5])) #文件名字中的数组保存到数组number中 256.json,即256保存到数组中
    numbers = sorted(number, reverse = False) #排序,升序(默认) <= reverse
    # print(numbers)
    for i in numbers:
        file=str(i)+".json"
        file_name.append(os.path.join(new_path, file))
    print(file_name[0:20])
    return file_name

FILE_NAMES = get_file_name(r"data/dir_json/") 

第三种情况:遇到大文件,为了避免一直读写,可以将第一次读取的文件名字保存到一个文件中

#读取一个文件夹中的所有文件名字,保存到npy文件中
import numpy as np
import pandas as pd
from shutil import copyfile
import os
import json

# 将dir中的filename保存到savepath npy中,
def dirsFileName_to_npy(dir_path,  #需要读取的文件夹
                        save_path, #需要保存地址跟名字
                        need_sort=True, #是否需要进行名字排序
                        need_remove = False): #是否需要删除npy文件
    # os.access(save_path,os.F_OK) #判断文件
    # os.path.exists(save_path) #判断文件夹或者文件
    if os.path.isfile(save_path) == False: #如果文件不存在,避免下次使用还要重新读取,相当于创建npy为中间文件
        name = []
        if os.path.isdir(dir_path): #isdir确定文件夹
            if need_sort == True:
                for filename in os.listdir(dir_path):  # 获取当前路径下的文件名
                    name.append( int( os.path.splitext(filename)[0] ) )
                name.sort()
                for i in range(len(name)):
                    name[i] = str(name[i]) + ".json"
            else: #不需要排序
                name.append(filename)  #将里面有得文件都保存名字
            #如果有这个文件夹就自动忽略下面的命令
            np.save(save_path,name)  
            c= np.load(save_path)
            print(len(c) , c[0:20])
            if need_remove:
                os.remove(save_path)
            
            
print("start")
dir_path = r"data/dir/" #需要读取文件夹路径
save_path = r"data/dir/name.npy" #文件名保存位置
dirsFileName_to_npy(dir_path, save_path ,need_sort=True,need_remove=False)
# os.remove(save_path)
print("finish") 
发布了97 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_32460819/article/details/103029569
今日推荐