python实现大文件分割与合并
小U盘传大电影时可以免去用winrar分割文件时的压缩和解压缩过程。
file.py import sys
from os.path import exists
fileCount = 0 def splitFile(fileName, partSize=1):
# 1024 * 1024 = 1048576
length = partSize * 1048576
f1 = open(fileName, "rb")
while True:
content = f1.read(length)
if content == "":
break
newFile = distFile(fileName)
f2 = open(newFile, "wb")
f2.write(content)
f2.close()
f1.close()
print ’split file complete!’ def distFile(sourceFile):
global fileCount
fileCount = fileCount + 1
extPos = sourceFile.rfind(‘.’)
if extPos > 0:
return sourceFile + ‘.part’ + str(fileCount)
else: # extPos == -1
print ‘File type? Can not split!’
sys.exit(1) def combine(filename):
count = 0
extPos = filename.find(‘.part’)
if extPos > 0:
file = filename[:extPos]
f1 = open(file, "wb")
while True:
count = count + 1
partFile = file + ‘.part’ + str(count)
if not exists(partFile):
break
else:
f2 = open(partFile, "rb")
content = f2.read()
f2.close()
f1.write(content)
f1.close()
print ‘combine file complete!’ else:
print ‘File type? Can not combine!’ def usage():
print ”’usage is "file.py s[c] filename" or "file.py s[c] filename size(M) \n ’s’ — ’split’, ‘c’ — ‘combine" ”’ if __name__ == "__main__":
if len(sys.argv) !=3 and len(sys.argv) !=4:
usage()
sys.exit(1)
if sys.argv[1] == ’s’:
if len(sys.argv) == 3:
splitFile(sys.argv[2])
elif len(sys.argv) == 4 and int(sys.argv[3]) > 0:
splitFile(sys.argv[2], int(sys.argv[3]))
else:
usage()
sys.exit(1) elif sys.argv[1] ==’c':
if len(sys.argv) == 3:
combine(sys.argv[2])
else:
usage()
else:
usage()
python实现大文件分割与合并的更多相关文章
- python学习——大文件分割与合并
在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情 ...
- 用Python实现大文件分割
python代码如下: import sys,os kilobytes = 1024 megabytes = kilobytes*1000 chunksize = int(200*megabytes) ...
- Php处理大文件-分割和合并
分割文件 /* * 分割文件 * 默认大小 2M=10485760/5 */ function file_split($file,$block_size=10485760/5) { $block_in ...
- 大文件分割、命令脚本 - Python
日志文件分割.命名 工作中经常会收到测试同学.客户同学提供的日志文件,其中不乏几百M一G的也都有,毕竟压测一晚上产生的日志量还是很可观的,xDxD,因此不可避免的需要对日志进行分割,通常定位问题需要针 ...
- Linux中split大文件分割和cat合并文件
当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1.分割 ...
- java:快速文件分割及合并
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...
- (转)java:快速文件分割及合并
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...
- JAVA IO分析三:IO总结&文件分割与合并实例
时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...
- c语言文件分割与合并
一.综述 c语言操作文件通过文件指针FILE*,每个要操作的文件必须打开然后才能读写. 注意事项: @1分割与合并文件最好使用二进制模式即"rb"或"wb",这 ...
随机推荐
- Android键盘面板冲突 布局闪动处理方案
转:来自Android键盘面板冲突 布局闪动处理方案 起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的 ...
- 使用srvany.exe把程序安装成windows服务
srvany.exe介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说srva ...
- Uva 10158 War
并查集的应用 直接阔成2倍.后N项为对应的敌人 #include <map> #include <set> #include <list> #include < ...
- 【linux高级程序设计】(第十一章)System V进程间通信 3
信号量通信机制 可以看到,跟消息队列类似,也是包括两个结构. int semget (key_t __key, int __nsems, int __semflg) : 创建信号量集合 第一个参数:f ...
- hdu 4081(次小生成树)
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- 源码安装cmake(或者叫升级cmake)
cmake source install as follows: 0 cd ~ 1 wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz 2 tar ...
- Educational Codeforces Round 32
http://codeforces.com/contest/888 A Local Extrema[水] [题意]:计算极值点个数 [分析]:除了第一个最后一个外,遇到极值点ans++,包括极大和极小 ...
- centos 部署web项目
Linux下安装Tomcat服务器和部署Web应用 一.上传Tomcat服务器
- Codeforces 825E - Minimal Labels
825E - Minimal Labels 题意 给出 m 条有向边,组成有向无环图,输出一个 1 到 n 组成的排列,每个数只能出现一次,表示每个点的标号.如果有边 \((u, v)\) 那么 \( ...
- Strobogrammatic Number -- LeetCode
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...