轮子1 创建与源目录相同的目录
def create_dir(source, target):
"""
创建与源目录相同的目录
:param source:
:param target:
:return:
"""
dir_list = find_dir(source)
for p in dir_list:
fdir = p.replace(source, target)
if not os.path.exists(fdir):
os.makedirs(fdir)
轮子2:寻找非空目录
def find_dir(filepath):
"""
寻找非空目录
:param filepath: 根目录
:return:非空目录
"""
dir_list = list()
files = os.listdir(filepath)
for fi in files:
fi_d = os.path.join(filepath, fi)
if os.path.isdir(fi_d):
dir_list.extend(find_dir(fi_d))
else:
continue
if not dir_list and files: # 只记录非空目录
dir_list.append(filepath)
return dir_list
轮子3 获取指定路径下的所有图片
def get_images(filepath):
"""
获取指定路径下的所有图片
:param filepath: 指定路径
:return: 所有图片的路径列表
"""
dir_list = list()
files = os.listdir(filepath)
for f in files:
fdir = os.path.join(filepath, f)
if os.path.isdir(fdir):
dir_list.extend(get_images(fdir))
elif fdir.endswith('.png') or fdir.endswith('.jpg') or fdir.endswith('.gif') or fdir.endswith('.JPG') or \
fdir.endswith('.PNG') or fdir.endswith('.GIF') or fdir.endswith('.jpeg') or fdir.endswith('.JPEG'):
dir_list.append(fdir)
return dir_list
轮子4 获取指定后缀文件
(1)递归查找
def get_files(filepath, suffix):
"""
获取指定后缀文件
:param filepath: 指定文件夹
:param suffix: 指定后缀
:return: 指定后缀文件路径
"""
dir_list = list()
files = os.listdir(filepath)
for f in files:
fdir = os.path.join(filepath, f)
if os.path.isdir(fdir):
dir_list.extend(get_files(fdir))
elif fdir.endswith(suffix):
dir_list.append(fdir)
return dir_list
(2)使用glob模块
import glob
glob.glob("/home/project/data/*.doc")
或者:
import Path
dir_path = Path('/home/project/data/')
text_list = dir_path.glob('**/*.doc')
轮子5 获取指定路径下文件的大小
def get_file_size(path):
"""
获取指定路径下文件的大小
"""
# 字节bytes转化kb\m\g
def formatsize(bytes):
try:
bytes = float(bytes)
kb = bytes / 1024
return kb
except:
print("传入的字节格式不对")
return "Error"
# if kb >= 1024:
# M = kb / 1024
# if M >= 1024:
# G = M / 1024
# return "%fG" % (G)
# else:
# return "%fM" % (M)
# else:
# return "%fkb" % (kb)
s = os.path.getsize(path)
return formatsize(s)