import os
class FileOperationBase(object):
def __init__(self, oldpath, newpath, chunksize = 1024):
self.chunksize = chunksize #分割后每个文件的大小
self.oldpath = oldpath #待处理文件路径
self.newpath = newpath #处理后文件的存放路径
# 将文件分割成大小为chunksize的块
def splitFile(self):
# '将文件分割成块,并保存到newpath中'
if not os.path.exists(self.newpath): #若存储目录不存在,则
os.mkdir(self.newpath) #创建存储目录
chunknum = 0 #初始化分割后文件数量为0
inputfile = open(self.oldpath, 'rb') #以二进制读的方式打开大文件
try:
while True:
chunk = inputfile.read(self.chunksize) #每次读取固定大小的文件
if not chunk: #若文件块是空的,则
break
chunknum += 1 #分割后的文件数+1
# 将多个文件路径连接成一个完整路径作为文件存储路径
filename = os.path.join(self.newpath, ("%02d.txt" % chunknum))
fileobj = open(filename, 'wb') #以二进制写的方式打开小文件
fileobj.write(chunk) #将读取的内容写入小文件
fileobj.close() #关闭打开的小文件
except IOError:
print("文件读取错误!\n")
raise IOError
finally:
inputfile.close() #关闭打开的大文件
return chunknum
# 将多个文件合并成一个文件
def mergeFile(self):
# '将new路径下的所有文件块合并,并存储到old路径下。'
if not os.path.exists(self.newpath): #若待合并文件目录不存在,则
print("待合并文件路径不存在,请输入正确路径!")
raise IOError
files = os.listdir(self.newpath) #获取待合并文件夹下所有文件名
with open(self.oldpath, 'w') as output: #以二进制的方式打开合并后的空大文件
for eachfile in files: #遍历待合并文件
filepath = os.path.join(self.newpath, eachfile) #将待合并目录与文件名合成完整路径
with open(filepath, 'r') as infile: #以二进制的方式打开待合并文件
data = infile.read() #读取内容
output.write(data) #写入到大文件中
Python分割合并文件
最新推荐文章于 2024-05-30 10:17:04 发布