问题:
判断一个文件夹,将文件夹中所有文件的名字,按照顺序保存到数组当中
总结:用到的函数
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")